Kübik özdeğer problemi için Jacobi-Davidson yönteminin uygulanması


9

Büyük bir kübik özdeğer problemim var:

(bir0+λbir1+λ2bir2+λ3bir3)x=0.

Bunu lineer bir özdeğer problemine dönüştürerek çözebilirdim ama bir sistemle sonuçlanırdı 32 büyük gibi:

[-bir0000ben000ben][xyz]=λ[bir1bir2bir3ben000ben0][xyz],

nerede y=λx ve z=λy. Kübik bir özdeğer problemini çözmek için başka hangi teknikler mevcuttur? Jacobi-Davidson'un bunu çözecek bir sürümü olduğunu duydum ama bir uygulama bulamadım.

Ayrıca, ARPACK'in shift-invert yöntemine benzer şekilde spesifik özdeğerleri hedefleyebilmem ve ilişkili özvektörleri bulabilmem gerekiyor.


İlgili matrislerin boyutları nelerdir?
Bill Barth

birben sipariş 10000x10000. Bu sorunun iki farklı formülasyonu var, bunlardan biribirbenyoğun, diğerinde ise seyrek.
OSE

1
SLEPc , kuadratik özdeğer problemleri ve doğrusal olmayan özdeğer problemleri için rutinlere sahiptir, bu nedenle orada neye ihtiyacınız olduğunu bulabilirsiniz. Ayrıca, vardiya ve ters çevirme olanakları ve ARPACK ile bir arayüzü vardır.
Geoff Oxberry

Yanıtlar:


5

ARPACK'in ters iletişim protokolü ile, 3nx3n matris açıkça: sadece hesaplayan iki fonksiyon sağlamanız gerekir:

[xyz][-bir0xyz] ve [xyz][bir1x+bir2y+bir3zyz]

(hala depolamanın bedelini ödüyorsunuz 3xnboyutlu vektörler ancak matrisler için hiçbir şey ödemezsiniz).

Tersine çevirme dönüşümü ile ilgili olarak, aynısını yapabilir, yani hesaplayan bir geri arama kullanarak kendiniz uygulayabilirsiniz xM-1x onun yerine xMx ve hesaplananı değiştirin λ's ile λ-1. HesaplamakM-1x, matrisinizi önceden çarpanlarına ayırabilirsiniz Myalnızca ön faktoring anlamına gelir bir0(matrisin yapısına bağlı olarak LU, Cholesky veya seyrek sürümlerini kullanarak). Tam vites değiştirme dönüşümü için benzer bir şeyin yapılabileceğini düşünüyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.