Calcolo numerico/Casi particolari

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcolo numerico

Caso 1: matrici hermitiane

Una matrice hermitiana è diagonalizzata attraverso matrici unitarie, cioè A=QλQh con λ diagonale e QQh=QhQ=I, cioè abbiamo una base ortonormale di autovettori. Allora in questo caso:

σk=𝒚kh𝒛k+1=𝒚khA𝒚k=𝒚khA𝒚k𝒚hk𝒚k

=(Ak𝒚0)h∗(Ak+1𝒚0)(Ak𝒚0)h(Ak𝒚0)formula ♡

e poniamo

𝒚0=∑j=1nαj𝒚j

e sostituendo questa scrittura nella formula ♡ otteniamo:

=(Ak∑j=1kαj𝒚j)h∗(Ak+1∑j=1nαj𝒚j)(Ak∑j=1nαj𝒚j)h(Ak∑j=1nαj𝒚j)

e tenendo conto che Ak𝒚j=λjk𝒚j mettendo in evidenza λ1k:

σk=λ1|λ1k|2[α¯1𝒚1h+∑j=2nα¯jλjλ1¯k𝒚jh]∗[α1𝒚1+∑jαj(λjλ1)k+1𝒚j]|λ1k|2[α¯1𝒚1h+∑jα¯jλjλ1¯k𝒚jh]∗[α1𝒚1+∑j=2nαj(λjλ1)k𝒚j]

Si può semplificare (|λ1|k)2, inoltre, siccome gli autovettori costituiscono una base ortogonale, i prodotti misti del tipo 𝒚i𝒚j,i≠j si annullano, e rimane solo:

σk=λ1[|α1|2𝒚1h𝒚1+∑j=2n|αj|2(λjλ1)2kλjλ1𝒚jh𝒚j]λ1∗(α12𝒚1h𝒚1+∑j=2n|αj|2(λjλ1)2k𝒚jh𝒚j)

per l'ortonormalità 𝒚jh𝒚j=1, allora

σk=λ1α12(1+∑j=2n|αj|2|α1|2∗|λj/λ1|2k∗|λj/λ1|)|α12|∗(1+∑j=2n|αj2α12|(λj/λ1)2k)

Al primo ordine, nella sommatoria sopravvive il termine per j=2 (secondo autovalore più grande), quindi

σ=λ1[1+|α2/α1|2|λ2/λ1|2k|λ2/λ1|][1+|α2/α1|2|λ2/λ1|2k]

=λ1(1+ε)1+ε¯

=λ1∗(1+ε)(1−ε¯)

σk=λ1[1+|α2/α1|2(λ2/λ1)2k(λ2/λ1)]∗[(1−|α2/α1|2|λ2/λ1|2k]

=λ1∗(1−|α1/α2|2|λ2/λ1|2k)

Allora σk nel caso di matrici hermitiane:

σk=λ1(1+O(|λ2/λ1|2k))

A differenza del caso generale compare l'esponente 2k e la convergenza è più veloce.

Il metodo della potenza non converge su una matrice hermitiana quando la matrice ha autovalori α,−α di moduli massimo. Escludiamo anche il caso di autovalori complessi

Caso 2: matrici hermitiane definite positive

Consideriamo A=QλQh con Q unitaria e λ∈ℝ+. Il caso α,−α non può verificarsi, quindi su una matrice hermitiana definita positiva il metodo delle potenze converge sempre.

Risparmio del costo computazionale: cerchiamo λmin(A) con il metodo delle potenze inverse. Ad ogni iterazione si risolve il sistema lineare

A𝒛k+1=𝒚k

con costo di fattorizzazione o(n3). La fattorizzazione viene fatta una sola volta. Ad ogni iterazione, risolvo i sistemi triangolari. Se R è triangolare superiore piena il costo è o(n2). Se invece R è a banda, il costo è o(n). Lo stesso vale se R è sparsa.

Siccome le iterazioni fatte sono numerose, si cerca di ridurre il costo di ogni iterazione a scapito del costo iniziale.

Trasformo la matrice A in una matrice tridiagonale B. A questo punto il costo della fattorizzazione di Cholesky è o(n), perché R è bidiagonale, e anche il costo delle singole operazioni si riduce.

Passo da A generica a B tridiagonale tramite trasformazioni di Hausolder:

Ak+1=Tk−1AkTk,k=1,…,n−2

La matrice di sinistra azzera la sottocolonna e quella di destra azzera la sottoriga di A in modo da ottenere una matrice tridiagonale. Questa operazione costa o(n3).

Condizionamento

Consideriamo il caso in cui la fattorizzazione di Cholesky non può avvenire (cioè λmin molto piccolo e A definita positiva). Invece che considerare A, consideriamo Â=A+cI, che è ancora hermitiana e definita positiva. Si usa la tecnica di shift. Gli autovalori di  sono gli autovalori di A shiftati di c. K2(A)=λmaxλmi ed è grande, invece si ha

K2(A+c)=λmax(A+c)λmin(A+c)=o(1)

σk(Â) converge all'autovalore minimo di Â, invece

σk(A)=σk(Â)−c

e si ha come rischio l'errore di cancellazione. Bisogna bilanciare c rispetto a λmin(A).

Esercizio 3.1

Nel caso di matrici hermitiane, calcolare la velocità di convergenza nel caso di autovalore multiplo.

Sia λmax di molteplicità r.

|λ1|=|λ2|=λr|>|λr+1|≥…≥|λn|

𝒚0=∑i=1rα1,i𝒙1,i+∑j=r+1nαj𝒙j

σk=λ1(1+O(|λr+1λ1|2k)

si ritrova lo stesso risultato di prima con λr+1 che sostituisce λ2, cioè, al posto di λ2 compare il primo valore diverso da λ1.

Template:Avanzamento