Implementasi metode Jacobi-Davidson untuk masalah nilai eigen kubik

9

Saya memiliki masalah nilai eigen kubik besar:

(SEBUAH0+λSEBUAH1+λ2SEBUAH2+λ3SEBUAH3)x=0.

Aku bisa mengatasi ini dengan mengkonversi ke masalah nilai eigen linear tetapi akan menghasilkan sistem sebagai besar:32

[-SEBUAH0000saya000saya][xyz]=λ[SEBUAH1SEBUAH2SEBUAH3saya000saya0][xyz],

di mana dan z = λ y . Apa teknik lain yang tersedia untuk memecahkan masalah nilai eigen kubik? Saya pernah mendengar bahwa ada versi Jacobi-Davidson yang akan menyelesaikannya tetapi belum menemukan implementasi.y=λxz=λy

Juga, saya harus dapat menargetkan nilai eigen spesifik yang serupa dengan metode shift-and-invert ARPACK dan menemukan vektor eigen terkait.

OSE
sumber
Apa dimensi dari matriks yang terlibat?
Bill Barth
memesan10.000×10.000. Saya memiliki dua formulasi berbeda dari masalah ini, satu di mana A i adalah padat dan yang lain jarang. SEBUAHsaya10000×10000SEBUAHsaya
OSE
1
SLEPc memiliki rutinitas untuk masalah nilai eigen kuadratik dan masalah nilai eigen nonlinear, sehingga Anda mungkin dapat menemukan apa yang Anda butuhkan di sana. Ini juga memiliki fasilitas shift-and-invert, dan memiliki antarmuka ke ARPACK.
Geoff Oxberry

Jawaban:

5

Dengan protokol komunikasi terbalik ARPACK, Anda tidak perlu menyimpan matriks secara eksplisit: Anda hanya perlu menyediakan dua fungsi yang menghitung:3n×3n

dan [ x y z ] [ A 1 x + A 2 y + A 3 z y z ][xyz][-SEBUAH0xyz][xyz][SEBUAH1x+SEBUAH2y+SEBUAH3zyz]

3×n

Mengenai transformasi invert, Anda dapat melakukan hal yang sama, yaitu mengimplementasikannya sendiri dengan menggunakan panggilan balik yang menghitung xM.-1xxM.xλsλ-1M.-1xM.SEBUAH0

BrunoLevy
sumber