Implementação do método Jacobi-Davidson para o problema de autovalor cúbico

9

Eu tenho um grande problema de autovalor cúbico:

(A0+λA1+λ2A2+λ3A3)x=0.

Eu poderia resolver isso convertendo para um problema de autovalor linear, mas resultaria em um sistema maior:32

[A0000I000I][xyz]=λ[A1A2A3I000I0][xyz],

onde e . Que outras técnicas estão disponíveis para resolver um problema cúbico de autovalor? Ouvi dizer que existe uma versão do Jacobi-Davidson que a resolverá, mas não encontrou uma implementação.z = λ yy=λxz=λy

Além disso, preciso ser capaz de direcionar valores próprios específicos de maneira semelhante ao método shift-in-invertido do ARPACK e encontrar os vetores próprios associados.

OSE
fonte
Quais são as dimensões das matrizes envolvidas?
Bill Barth
10000×10000 A iAi é da ordem . Eu tenho duas formulações diferentes desse problema, uma na qual é densa e na outra é esparsa. 10000×10000Ai
OSE
11
O SLEPc possui rotinas para problemas quadráticos de autovalores e problemas não lineares de autovalores, para que você possa encontrar o que precisa lá. Ele também possui instalações de troca e inversão e possui uma interface para o ARPACK.
Geoff Oxberry

Respostas:

5

Com o protocolo de comunicação reversa do ARPACK, você não precisa armazenar explicitamente a matriz : você só precisa fornecer duas funções que computam:3n×3n

[ x y z ] [ A 1 x + A 2 y + A 3 z y z ][xyz][A0xyz] e [xyz][A1x+A2y+A3zyz]

(você ainda paga o preço de armazenar os vetores tridimensionais tridimensionais, mas não paga nada pelas matrizes).3×n

Com relação à transformação invertida, você pode fazer o mesmo, ou seja, implementá-la usando um retorno de chamada que calcula vez de e substitui os computados por . Para calcular , você pode pré-fatorar sua matriz , o que significa apenas pré-fatorar (usando LU, Cholesky ou versões esparsas deles, dependendo da estrutura da matriz). Para a transformação turno-inversão completa, acho que algo semelhante pode ser feito.xM1xxMxλsλ1M1xMA0

BrunoLevy
fonte