Calcolo numerico/Tecniche del pivot

Da testwiki.
Vai alla navigazione Vai alla ricerca

Template:Calcolo numerico

Tecnica del pivot parziale

Supponiamo di essere al k-esimo passo di fattorizzazione, in cui bisogna azzerare i coefficienti della k-esima colonna a partire dall'entrata k+1. Cerchiamo l'indice i¯ tale che Ai¯,k=maxi=kn|aik|, e scambiamo quindi la i¯-esima riga con la k-esima, applicando alla matrice A(k) la matrice di permutazione pk, che è l'identità in cui scambio la i¯-esima riga con la k-esima.

Bisogna verificare che anche moltiplicando per la matrice di permutazione, la fattorizzazione rimane del tipo LU.

Esempio in dimensione n=4

In dimensione n=4, all'ultimo passo dell'eliminazione si ottiene

U=M3P3M2P2M1P1A,

(le matrici di permutazione sono alternate a quelle elementari)

Le matrici di permutazione hanno la proprietà che PkPk=I, allora, inserisco il doppio prodotto nell'uguaglianza nelle posizioni opportune, per far comparire vicine tra loro le matrici di permutazione.

Ad esempio:

passo 1,U=M3P3M2P2M1P2P2P1A,

Ponendo M¯1=P2M1P2, al passo successivo otteniamo:

U=M3P3M2P3P3M¯1P3P3P2P1A

e ponendo M¯2=P3M2P3, e M̂1=P3M¯1P3, ottengo:

U=M3M¯2M̂1P3P2P1A

e si pone P3P2P1A=PA.

Vogliamo verificare che anche le matrici segnate sono ancora matrici elementari di Gauss, e quindi invertibili.

Consideriamo, ad esempio, M¯2=P3M2P3

M2=100001000M32100M4201

Invece

P3=1000010000010010

Allora calcoliamo il prodotto P3M2P3:

P3M2=100001000M42010M3210

(scambiiamo la terza riga con la quarta). Invece, moltiplicando a destra per P3, scambiamo la terza e la quarta colonna, e otteniamo la matrice

M¯2=100001000M42100M3201

che ha la stessa forma di M2.

Consideriamo invece la matrice P2 che scambia la seconda riga con la terza:

p2=1000001001000001

Allora

P2M2=10000M321001000M4201

e moltiplicando per P2:

P2M2P2=100001M320001000M421

che non è più una matrice elementare di Gauss.

In ogni caso, la moltiplicazione per P2 non è più un'operazione ammissibile nell'eliminazione di Gauss al passo k=2, perché si può operare solo nella sottomatrice 2×2 in basso a destra, quindi non ci sono problemi.

Fattorizzazione

Dato il sistema A𝒙=𝒃, moltiplichiamo per P ambo i membri per far comparire la matrice di permutazione, e otteniamo:

PA𝒙=P𝒃

PA=LU⟶LU𝒙=P𝒃

Allora bisogna considerare il termine noto permutato 𝒃¯, e risolviamo prima il sistema lineare

L𝒚=𝒃¯

e poi

U𝒙=𝒚

Effetti del pivot parziale

Il pivot parziale ha un effetto stabilizzante, ovvero riduce l'errore algoritmico. In particolare:

1. Come prima, L è una matrice triangolare inferiore con 1 sulla diagonale principale e Mik nella parte inferiore.

2. I moltiplicatori hanno espressione

Mik=|Aik|maxj=kn|Ajk|

quindi, per ogni i=k+1,…,n i coefficienti sono ≤1.

3. La crescita degli elementi di U è limitata, infatti i coefficienti della "nuova" matrice sono:

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

mentre per i,j=1,…k gli elementi della matrice rimangono invariati, e quindi

Aij(k+1)=Aij(k)

in definitiva

|Aij|(k+1)≤|Aij|(k)+|Mik||Akj|(k)≤|Aij|+|Akj|

Chiamiamo Am(k) il massimo modulo degli elementi della matrice A(k). Allora, passando ai massimi nella disuguaglianza sopra,

|Am(k+1)|≤|Am(k)|+|Am(k)|=2|Am(k)|

e applicando a ritroso la relazione

|Am|(n)≤2n−1|Am(1)|

Errore algoritmico

Teorema 2.7

Sia A∈ℂn,n tale che i suoi elementi siano numeri macchina (focus sull'errore algoritmico). Chiamiamo L¯,U¯ le matrici effettivamente calcolate, allora L¯∗U¯=A+δA dove vale la relazione

|δA|≤2nu(|A|+|L¯|∗|U¯|)+O(u2)

(a livello notazionale, chiamiamo |B| la matrice che ha come componenti i moduli degli elementi di B)

In questa relazione, oltre alla dipendenza dalla dimensione, da A e dalla precisione di macchina, il fatto significativo è che compaiono L¯,U¯.

Teorema 2.8

Siano A,B∈ℂn,n e, considerando L¯,U¯ effettivamente calcolate, chiamiamo 𝒚¯ la soluzione del sistema L¯𝒚=𝒃 e 𝒙¯ soluzione di U¯𝒙=𝒚. Allora 𝒙¯ è la soluzione di

(A+δA)𝒙¯=𝒃

con

δA≤4nu(|A|+|L¯||U¯|+o(u2))

(interpretiamo l'errore algoritmico come errore inerente del problema perturbato)

Esempio 2.7

Consideriamo la matrice

A=(ε110)

𝒃=(1+ε,1)

dove ε è scelto in modo che la soluzione del sistema lineare A𝒙=𝒃 sia (1,1). Il problema è ben condizionato, infatti

A−1=011−ε

K(A)=|A|∞∗|A−1|∞=(1+ε)2

e quindi se ε è piccolo, K(A)≃1.

Per quanto riguarda la stabilità, senza tecnica del pivot:

L=101/ε1

U=ε10−1/ε

𝒙¯=(0,1)

mentre la soluzione esatta ha entrambe le componenti uguali a 1, e il problema è dato dalla crescita dei coefficienti di U.

Tecnica del pivot totale

Per ogni passo k, cerchiamo i¯,j¯ tale che

|Ai¯,j¯|=maxi,j=kn|Ai,j|

assumiamo di poter fare permutazioni di colonne P̂k oltre che permutazioni di righe Pk.

Il problema che sorge è che, facendo permutazioni di colonne, si permuta l'ordine delle incognite.

Esempio 2.8

Nella catena di moltiplicazioni di matrici elementari, nel caso n=4,

U=M3P3M2P2M1P1AP̂1P̂2P̂3

ma poniamo P̂1P̂2P̂3=P̂. L'altro pezzo di U viene trattato come prima.

Come prima

PAP̂=LU

e per risolvere il sistema A𝒙=𝒃 permutiamo a sinistra,

PA𝒙=P𝒃

bisogna inserire la P̂, allora poniamo P̂𝒛=𝒙

PAP̂𝒛=P𝒃

Calcoliamo 𝒃¯ permutazione del termine noto, e risolviamo quindi:

L𝒚=𝒃¯

U𝒛=𝒚

P̂𝒛=𝒙,è una moltiplicazione matrice per vettore

Questo procedimento ha un effetto più stabilizzante rispetto al pivot parziale, infatti si ha:

Ak≤k∏j=2njj−1

e non sono state trovate matrici per cui vale l'uguaglianza.

Costo computazionale

La risoluzione forward o backward, considerando il numero di operazioni moltiplicative, ha come costo computazionale

∑i=1ni

infatti, per ogni incognita, si ha l'espressione

xi=bi−∑j=1i−1aijxjaii

Invece la fattorizzazione LU ha costo

∑k=1n−1[(∑i=k+1n1)+∑i=k+1n∑j=k+1n1]

che è dell'ordine di n3/3 (il primo addendo serve per il calcolo dei moltiplicatori, e il secondo per il calcolo del blocco quadrato in basso a destra).

Template:Avanzamento