Calcolo numerico/Fattorizzazione di Cholesky

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcolo numerico

Esistenza della fattorizzazione A=RtR

Questo tipo di fattorizzazione si applica solo al caso di matrici definite positive.

Teorema 2.9

Supponiamo di avere A∈ℝn×n simmetrica e non singolare. A è definita positiva se e solo se esiste R∈ℝn×n triangolare superiore tale che A=RtR.

Dimostrazione

2⟶1: A è non singolare, e supponiamo A=RtR, allora R è non singolare infatti

det⁡A=det⁡Rt∗det⁡R=|det⁡R|2

e quindi det⁡A≠0 implica R non singolare. Allora

∀𝒙≠0,𝒚=R𝒙≠0,

quindi

|𝒚|22≥0

e siccome ho escluso il caso nullo,

|𝒚|22>0.

e A è definita positiva.

1⟶2: consideriamo A simmetrica e definita positiva:

(α𝒂t𝒂A∗)

dove A∗ è una sottomatrice di dimensione n−1×n−1 e a 𝒂 è un vettore di n−1 componenti.

Definiamo R,Rt nel seguente modo:

R=(ρ𝒓t0R∗)

Rt=(ρ0t𝒓(R∗)t)

Il prodotto delle due matrici è:

RtR=(ρ2ρ∗𝒓tρ∗𝒓𝒓𝒓t+R∗tR∗)

ed eguagliamo termine a termine la decomposizione a blocchi con il risultato del prodotto ottengo:

α=ρ2⟶ρ=α𝒂=ρ𝒓𝒓=1α𝒂𝒂t=ρ𝒓t⟶𝒓t=𝒂tαA∗=𝒓𝒓t+R∗tR∗⟶R∗tR∗=A∗−𝒓𝒓t=A∗−1/α𝒂𝒂t

Definiamo la quantità

Â∗=R∗tR∗

Se Â∗ è ancora simmetrica e definita positiva, si può iterare la procedura, lavorando su R∗tR∗, fino a ottenere la fattorizzazione con R triangolare superiore. Quindi verifichiamo che Â∗ è simmetrica definita positiva.

Simmetria: sappiamo che

Â∗t=(R∗tR∗)t=R∗t(R∗t)t=R∗tR∗=Â∗

Positività: appliciamo ad A una matrice elementare M per azzerare la prima sottocolonna, con

A=(α𝒂t𝒂A∗)

M=(10−𝒂/αI)

Il risultato del prodotto è:

MA=(α𝒂t0−1/α𝒂𝒂t+A∗)

(come nell'eliminazione di Gauss ordinaria, la prima riga rimane invariata e la prima colonna viene azzerata)

Per poter azzerare una sottoriga, applichiamo alla matrice MA un passo di eliminazione gaussiana per righe. Eseguiamo il prodotto MAM̂ con

MA=(α𝒂t0A∗−1/α𝒂𝒂t)

M̂=(1−𝒂t/α0I)

(ora la sottocolonna dei coefficienti è sulla prima riga)

Calcolando il prodotto

MAM̂=(α00A∗−1/α𝒂𝒂t)

Osserviamo che M̂=Mt. Ponendo 𝒚=Mt𝒙, per ogni 𝒙≠0,

𝒙tMAM̂𝒙=𝒙tMAMt𝒙=𝒚tA𝒚

e 𝒚=Mt𝒙≠0∀𝒙≠0 perché M è non singolare. Siccome per ipotesi A è definita positiva, 𝒚tA𝒚 è maggiore di 0, e quindi la matrice grande MAM̂ è definita positiva.

Allora

A∗−1/α𝒂𝒂t

è definita positiva, perché sottomatrice principale di una definita positiva. Quindi Â∗=R∗tR è definita positiva e la procedura si può iterare sulla matrice di dimensioni n−1×n−1. Lavorando su R∗tR∗, si determinano progressivamente gli elementi di R∗, triangolare superiore.

cvd

Osservazione 2.4

Consideriamo

A∗−1/α𝒂𝒂t.

Alla matrice A∗ definita positiva, sottraiamo una matrice semidefinita positiva, e non è ovvio che il risultato sia una definita positiva. Infatti, ad esempio

I−(0,1)(0,1)t

non è definita positiva.

Complemento di Shur

Questa dimostrazione permette di osservare la seguente proprietà: il complemento di Shur di una definita positiva è definito positivo, dove Â∗ è il complemento di Shur di α in A.

Template:Definizione

Algoritmo per il calcolo di R

In questa scrittura supponiamo che gli elementi di A vengano progressivamente sovrascritti con quelli di R trovati passo per passo.

fork=1:n

A(k,k)=A(k,k)

end

fork=1:n−1

forj=k+1:n

A(k,j)=A(k,j)/A(k,k)

A(j,k)=0

end

fori=k+1:n

forj=k+1:n

A(i,j)=A(i,j)−A(i,k)∗A(j,k)

end

end

end

Descrizione esplicita: per k=1:n calcolo

Rkk=Akk(k+1)=Akk=ρ

e al passo n-esimo questa è l'unica operazione da fare.

Allora, per k=1:n−1, facciamo le seguenti operazioni:

1. per j=k+1:n,

Rkj=Akj(k+1)=AkjAkk=AkjRkk

(queste istruzioni corrispondono a 𝒂α, definizione del vettore 𝒓)

2. per i=k+1:n, e per j=k+1:n,

Âij,∗=Aij(k+1)=Aij−AkiAkj=Aij−RkiRkj

(nell'ultimo blocco di istruzioni si definiscono i coefficienti di Â∗, cioè A∗−𝒓𝒓t).

Ovviamente, alla fine di ogni passo k, le entrate Akj con j<k vengono annullate.

Costo computazionale

È sufficiente calcolare solo metà della sottomatrice A(k+1:n,k+1:n), che è simmetrica.

Le operazioni richieste sono quindi:

1. n estrazioni di radici quadrate (una per ogni passo di fattorizzazione);

2. n−k operazioni moltiplicative per ogni passo k. Infatti, al passo 𝒓t ha indici da k+1 a n, eper ciascun elemento houna divisione;

3. per ogni elemento di Â∗, ho un'operazione moltiplicativa, e quindi per ogni passo le operazioni sono

∑i=1mi=m(m+1)/2

con m=n−k+1−1=n−k, cioè m(m+1)/2=(n−k)(n−k+1)/2

Complessivamente il numero di operazioni è:

n+∑k=1n−1[n−k+(n−k)(n−k+1)/2]

e raccogliendo n−k otteniamo:

n+∑k=1n−1(n−k)(1+(n−k+1)/2)

n+1/2∑k=1n−1(n−k)(2+n−k+1)

n+1/2∑k=1n−1(n−k)(n−k+3)

≃n+1/2∑k=1n−1(n−k)2

=n3/6

Il costo computazionale è pari a quello dell'eliminazione di Gauss per le simmetriche.

Stabilità

Considerando il prodotto A=RtR, segue che

Akk=∑j=1nRkjtRjk

Akk=∑j=1nRjk2

Allora ciascun Rjk è tale che Rjk2≤Akk, quindi

|Rjk|≤Akk∀k

Chiamando Rm l'elemento di modulo massimo, si ha

Rm≤Am

Quindi gli elementi di R hanno crescita controllata da Am.

L'algoritmo è stabile.

Rapporto tra fattorizzazione LU e di Cholesky

Data una matrice simmetrica definita positiva, consideriamo il rapporto tra la fattorizzazione LU e quella di Cholesky. La fattorizzazione LU esiste unica per una definita positiva, perché le matrici di testa di una definita positiva sono definite positive, e non singolari, quindi le ipotesi del teorema di esistenza e unicità della fattorizzazione sono soddisfatte.

Tuttavia L≠Ut perché la diagonale di L ha entrate uguali a 1.

Poniamo U=D∗U¯ dove D è una matrice con elementi diagonali dati dalla diagonale principale di U.

Per ipotesi

A=LU=At=(LDU¯)t=U¯tDLt

e per l'unicità di fattorizzazione,

LU=U¯tDLt⟶L=U¯t,DLt=U

allora

A=U¯tDU¯

con D matrice a elementi diagonali positivi. Poniamo 𝒙=U¯𝒚, allora

𝒙tD𝒙=(U¯𝒚)tD(U¯𝒚)

=𝒚tU¯tDU¯𝒚=𝒙tA𝒙>0

perché A è definita positiva, allora U¯ è non singolare.

A=U¯tDU¯

Definiamo D1/2 come la matrice che ha come elementi diagonali le radici quadrate degli elementi di D.

Allora

A=U¯tD1/2D1/2U¯=(D1/2U¯)tD1/2U¯=RtR

cioè

R=D1/2U¯

dove U¯=D−1U, R=D1/2D−1U=D−1/2U.

Proposizione 2.1

L'eliminazione gaussiana conserva simmetria e definita positività.

Dim.

Simmetria: sappiamo che

Aij(k+1)=Aij(k)−MikAkj(k)

con

Mik=Aik(k)Akk(k)

cioè, sostituendo esplicitamente Mik:

Aij(k+1)=Aij(k)−Aik(k)Akk(k)Akj(k)

Aji(k)=Aij(k) per simmetria di A, quindi si può scrivere:

Aij(k+1)=Aji(k)−Aki(k)Akk(k)Ajk(k)

e tenendo conto che AjkAkk=Mjk si ha

Aij(k+1)=Aji(k)−MjkAki(k)=Aji(k+1)

cioè la sottomatrice in basso a destra ottenuta dopo il passo k-esimo è ancora simmetrica.

Definita positività: consideriamo

A=(α𝒂t𝒂A∗)

M=(10−𝒂/αI)

MA=(α𝒂t0A∗−1/α𝒂𝒂t)

L'ultima entrata è il complemento di Shur di α in A. Siccome A è definita positiva, anche il completamento è definito positivo. Allora l'eliminazione gaussiana è stabile sulle definite positive.

cvd

Template:Avanzamento