Sei sulla pagina 1di 3

.

Laboratorio III

Sistemi Lineari: Metodi Diretti

Fattorizzazione LU
Siano dati la matrice A ∈ Rn×n e i vettori x ∈ Rn , y ∈ Rn e b ∈ Rn tali che x è soluzione del
sistema:
Ax = b.

L’algoritmo di risoluzione per il sistema lineare tramite fattorizzazione LU implica i seguenti


passi:

1. Fattorizzazione LU della matrice A (eventualmente con pivoting) che darà in output due
(o tre) matrici in Rn×n :
• L triangolare inferiore,
• U triangolare superiore,
• P matrice di permutazione in caso di pivoting.
2. Risoluzione del sistema lineare LUx = b (in assenza di pivoting, ovvero per P = I):
• Risolvere tramite forward substitution il sistema Ly = b.
• Risolvere tramite backward substitution il sistema Ux = y.

In particolare gli algoritmi di sostituzione in avanti e indietro sono strutturati nel modo seguen-
te: siano lij e uij gli elementi delle matrici L e U rispettivamente. Entrambi gli algoritmi si
sviluppano scorrendo le righe i dei sistemi.
Forward substitution per il sistema Ly = b:
b1
y1 = ,
l11
 
i−1
1  X
yi = bi − lij yj  , i = 2, ...n.
lii j=1

Backward substitution per il sistema Ux = y:


yn
xn = ,
unn
 
n
1  X
xi = yi − uij xj  , i = n − 1, ...1.
uii j=i+1
Laboratorio III Sistemi Lineari: Metodi Diretti

Esercizio 3.1

Una sorgente di fluido refrigerante di portata q0 raffredda n macchine distribuite in parallelo


come schematizzato in figura.

La caduta di pressione ∆pi in ogni macchina è legata alla portata di fluido qi che la attraversa
tramite la relazione:
∆pi = Ri qi ,
dove Ri rappresenta la resistenza e gli attriti nel passaggio del fluido attraverso l’i–esima macchi-
na. Si vuole determinare la portata qi che raggiunge ciascuna macchina. Il calcolo delle portate
qi conduce al seguente sistema lineare:
     
1 1 1 1 ··· 1 q1 q0
R1 −R2 0 0 · · · 0   q2   0 
     
0 R2 −R3 0 ··· 0    q3   0 
   
 .. . . .

 . . .. . .. ..  
 · .=.
 0  . .
 . .. .. .. ..   ..   .. 
 .. . . . .  . .
0 0 0 · · · Rn−1 −Rn qn 0
| {z } | {z } | {z }
A q b
Pn
La prima equazione del sistema lineare esprime il fatto che i qi = q0 , mentre le altre n − 1
equazioni si ricavano tenendo conto che le cadute di pressione ∆pi in ogni macchina sono tutte
uguali (essendo le macchine in parallelo), quindi per ogni i, con i = 1, . . . , n−1, possiamo scrivere
l’equazione Ri qi − Ri+1 qi+1 = 0.

1. Si ponga n = 20, Ri = 1 con i = 1, . . . , n e q0 = 2 e si assegnino in Matlab la matrice A


e il vettore dei termini noti b.
2. Si calcoli la fattorizzazione LU con pivoting della matrice A, mediante la funzione Ma-
tlab lu. Verificare che la tecnica del pivoting non è stata usata in questo caso [Hint:
utilizzare il comando help].
3. Scrivere una funzione Matlab fwsub.m che, dati in ingresso una matrice triangolare in-
feriore L ∈ Rn×n e un vettore f ∈ Rn , restituisca in uscita il vettore x ∈ Rn , soluzione
del sistema Lx = f , calcolata mediante l’algoritmo della sostituzione in avanti (forward
substitution). L’intestazione della funzione dovrà essere function x = fwsub(A, b).
4. In modo analogo, scrivere la funzione bksub.m che implementi l’algoritmo della sostituzione
all’indietro (backward substitution) per matrici triangolari superiori U.
Nota: Volendo è possibile utilizzare i comandi Matlab triu e tril che, data una matrice,
estraggono rispettivamente la matrice triangolare superiore ed inferiore.

–2–
Laboratorio III Sistemi Lineari: Metodi Diretti

5. Risolvere numericamente, utilizzando le funzioni fwsub.m e bksub.m implementate al pun-


to precedente, i due sistemi triangolari necessari per ottenere la soluzione del sistema di
partenza Aq = b.

Esercizio 3.2

Si consideri il sistema lineare Hx = f con:


1
 
1 1
1 ···
2 3 n 
1 1 1 1
 
···

 
2 3 4 n+1 
H=

1 1 1 1

.
 ··· 
3 4 5 n+2 
. .. .. .. .. 
 .. . . . . 
 

1 1 1 1

···
n n+1 n+2 2n − 1

La matrice H, hi,j = (i + j − 1)−1 , con i, j = 1, . . . , n, è nota come matrice di Hilbert e costituisce


un classico esempio di matrice mal condizionata. Si prenda il vettore dei termini noti b in
 T
modo da avere come soluzione esatta del sistema il vettore xex = 1, 1, . . . , 1 . La funzione
Matlab hilb permette di generare la matrice di Hilbert di dimensione n × n.

1. Per n = 5, si determini la fattorizzazione LU della matrice H tramite la funzione lu. È


stata effettuata qualche permutazione delle righe di H? Se sı̀, quale?
2. Per n = 5, si calcoli il vettore b e successivamente si risolva numericamente il sistema
lineare Hx = b utilizzando la fattorizzazione LU della matrice.

3. Si ripetano i punti precedenti per n = 2, 3, . . . , 15, calcolando, per ogni n, l’errore relativo
(errrel = kxex − xk2 /kxex k2 ) e il numero di condizionamento corrispondenti. Si rappresen-
tino su un grafico in scala semi–logaritmica gli andamenti dell’errore relativo e del numero
di condizionamento in funzione di n. Commentare il grafico ottenuto.

–3–

Potrebbero piacerti anche