Eu tenho um grande problema de autovalor cúbico:
Eu poderia resolver isso convertendo para um problema de autovalor linear, mas resultaria em um sistema maior:
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 = λ 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.
Respostas:
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.x↦M−1x x↦Mx λ′s λ−1 M−1x M A0
fonte