Autovalore più piccolo senza inverso


11

Supponiamo che UNRn×n sia una matrice definita simmetrica e positiva. UN è abbastanza grande da essere costoso per risolvere direttamente UNX=B .

Esiste un algoritmo iterativo per trovare l'autovalore più piccolo di UN che non comporta l'inversione di UN in ogni iterazione?

Cioè, dovrei usare un algoritmo iterativo come i gradienti coniugati per risolvere UNX=B , quindi applicare ripetutamente UN-1 sembra un costoso "ciclo interno". Ho solo bisogno di un singolo autovettore.

Grazie!


1
Hai provato a usare la decomposizione di Cholesky? Dovresti fattore A in LLT con L è una matrice triangolare. Una volta che hai la fattorizzazione (lo fai solo una volta) puoi usarla in ogni iterazione per risolvere il sistema molto velocemente con la sostituzione avanti e indietro.
Juan M. Bello-Rivas,

A è una matrice sparsa?
Tolga Birdal,

ha una struttura a blocchi, ma preferirei non scherzare se non devo - quindi stavo cercando "metodi senza matrice". L'algoritmo "LOBPCG" ha qualche promessa, credo! @Juan, la fattorizzazione di Cholesky è ancora piuttosto costosa. UN
Justin Solomon il

Se stai usando matlab o ottava usa la eigsroutine-. È un metodo iterativo. Ci sono opzioni per specificare quale autovalore vuoi, ad esempio il più piccolo reale .
sebastian_g,

Capisco e sto davvero usando gli eigs in matlab. Ma se si specifica opzioni come "SM" di GIE, quindi richiede l'inverso di piuttosto che A . Consulta la tabella nella documentazione: mathworks.com/help/matlab/ref/eigs.htmlUNUN
Justin Solomon,

Risposte:


13
  1. Calcola l'autovalore di magnitudine maggiore di A (con, diciamo, ).λmun'XUNeigs('lm')

  2. Poi calcolare il più grande magnitudo (negativo) autovalore λ m un x di M = A - λ m una x I (ancora una volta, attraverso una chiamata standard a ).λ^mun'XM=UN-λmun'Xioeigs('lm')

  3. Si osservi che λ m a x + λ max = λ m i n ( A ) . Il motivo per cui questo vale è spiegato qui .λ^mun'X+λmax=λmion(UN)

  4. Trova il tuo autovettore risolvendo ( A - λ m i n I ) v = 0 .v(UN-λmionio)v=0

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.