Sei sulla pagina 1di 7

Metodo delle sostituzioni allindietro

U R
nn
matrice triangolare superiore, data
b R
n
vettore termine noto, dato
?x R
n
: Ux = b
con il metodo
for i = n : 1 : 1
x
i
=
b
i

n
j =i +1
u
ij
x
j
u
ii
Scrivere una function matlab con: Input: U, b
Output: x
Per determinare la dimensione di una matrice allinterno della
function:
[n,m]=size(U) % n=num righe, m=num colonne
n=length(b) % n=massima dimensione di b
c Paola Gervasio - Calcolo Numerico 1
Esercizio 1
Risolvere il sistema Ux = b con il proprio programma.
U =
_

_
1 1 3 0
0 1 2 1
0 0 4 1
0 0 0 3
_

_
b =
_

_
2
0
6
6
_

_
Vericare la correttezza del proprio programma confrontando con il
risultato del comando \ di matlab.
Comando \ di matlab Quando la matrice `e triangolare, il comando
\ implementa il metodo di sostituzione in avanti (forward) o
allindietro (backward).
c Paola Gervasio - Calcolo Numerico 2
Metodo delle sostituzioni in avanti
L R
nn
matrice triangolare inferiore, data
b R
n
vettore termine noto, dato
?x R
n
: Lx = b
con il metodo
for i = 1 : n
x
i
=
b
i

i 1
j =1

ij
x
j

ii
Scrivere una function matlab con: Input: L, b
Output: x
c Paola Gervasio - Calcolo Numerico 3
Implementazione della fattorizzazione LU
lufact.m Input: A Output (comodo che non ottimizza lo spazio
di memoria): L, U
fattorizzazione LU: algoritmo
per k = 1, . . . , n 1
per i = k + 1, . . . , n
A
ik
=
A
ik
A
kk
,
per j = k + 1, . . . , n
A
ij
= A
ij
A
ik
A
kj
Il triangolo superiore di A (inclusa la diagonale principale) contiene
la matrice U della fattorizzazione.
Il triangolo inferiore di A (esclusa la diagonale principale) contiene
la matrice L della fattorizzazione (esclusa la sua diagonale, ma
sappiamo che L
ii
= 1).
c Paola Gervasio - Calcolo Numerico 4
Per estrarre triangolo inferiore e triangolo superiore i comandi sono:
L=tril(A,-1)+eye(n);
U=triu(A);
N.B. Non chiamare lu la propria function, perch`e `e il nome della
function matlab.
Vericare loutput della propria function con
[L,U,P]=lu(A);
Per ora ignorare la matrice P (terzo output), contiene le
informazioni della pivotazione (prossima lezione).
c Paola Gervasio - Calcolo Numerico 5
Esercizio su fattorizzazione LU (eslu)
Si vuole risolvere il sistema lineare Ax = b con
A =
_
_
_
_
10 4 3 2
2 20 20 1
3 6 4 3
3 0 3 1
_
_
_
_
b =
_
_
_
_
5
24
13
2
_
_
_
_
con la fattorizzazione LU.
Dopo aver calcolato la fattorizzazione LU di A, risolvere i sistemi
triangolari nellordine:
_
Ly = b
Ux = y
con le proprie function e con le function matlab.
c Paola Gervasio - Calcolo Numerico 6
Chiamata con le proprie function:
A=....;
b=....;
[L,U]=lufact(A);
y=forsub(L,b);
x=backsub(U,y);
Chiamata con le function matlab:
A=....;
b=....;
[L,U,P]=lu(A);
y=L\b;
x=U\b;
c Paola Gervasio - Calcolo Numerico 7

Potrebbero piacerti anche