Sunteți pe pagina 1din 7

Tema nr.

2
Date: n - dimensiunea sistemului, - precizia calculelor, matricea sis-
temului A R
nn
, vectorul termenilor liberi b R
n
:
Sa se calculeze, c and este posibil, o descompunere LU a matricii A
(A = LU), unde L este matrice inferior triunghiulara, iar U este matrice
superior triunghiulara cu 1 pe diagonala;
Folosind aceasta descompunere, sa se calculeze determinantul matricii
A (det A = det Ldet U) ;
Utiliz and descompunerea LU calculata mai sus si metodele substitut iei
directe si inverse, sa se calculeze x
LU
, o solut ie aproximativa a sistemu-
lui Ax = b;
Sa se verice solut ia calculata prin asarea normei:
|A
init
x
LU
b
init
|
(aceasta norma ar trebui sa e mai mica dec at 10
8
, 10
9
)
A
init
si b
init
sunt datele init iale, nu cele modicate pe parcursul algo-
ritmului.
Restrict ie: n program sa se aloce doar doua matrici, A si A
init
(o copie
a matricii init iale). Descompunerea LU se va calcula direct n matricea
A. Cu acest tip de memorare nu se ret ine diagonala matricii U, dar se
va t ine cont de faptul ca u
ii
= 1, i n rezolvarea sistemului superior
triunghiular Ly = b (se modica procedura de rezolvare a sistemelor
superior triunghiulare).
Observat ii
1. Precizia calculelor , este un numar pozitiv de forma = 10
m
(cu
m = 5, 6, ..., 10, ... la alegere) care este data de intrare n program (se
citeste de la tastatura sau din sier) la fel ca si dimensiunea n a datelor.
Acest numar se foloseste atunci cand testam daca o variabila este 0 sau
nunaintea unei operat ii de mpart ire. Daca vrem sa efectuam operat ia
de mpart ire s = 1/v unde v R, NU vom scrie:
1
if(v! = 0) s = 1/v;
else printf( nu se poate face impartirea);
ci vom scrie n program:
if(fabs(v) > eps) s = 1/v;
else printf( nu se poate face impartirea);
2. Daca pentru o matrice A avem descompunerea LU, rezolvarea sistemu-
lui Ax = b se reduce la rezolvarea a doua sisteme triunghiulare:
Ax = b LUx = b
(
Ly = b,
Ux = y.
Se rezolva nt ai sistemul inferior triunghiular Ly = b. Apoi se rezolva
sistemul superior triunghiular Ux = y unde y este solut ia obt inuta
din rezolvarea sistemului precedent Ly = b. Vectorul x rezultat din
rezolvarea sistemului Ux = y este si solut ia sistemului init ial Ax = b.
3. Pentru calculul |A
init
x
LU
b
init
| avem:
A = (a
ij
) R
nn
, x R
n
, Ax = y R
n
, y = (y
i
)
n
i=1
y
i
=
n
X
j=1
a
ij
x
j
, i = 1, 2, . . . , n
z = (z
i
)
n
i=1
R
n
, |z| =
v
u
u
t
n
X
i=1
z
2
i
Metodele substitut iei
Fie sistemul liniar:
Ax = b (1)
unde matricea sistemului A este triunghiulara. Pentru a gasi solut ia unica a
sistemului (1), trebuie ca matricea sa e nesingulara. Determinantul matri-
cilor triunghiulare este dat de formula:
det A = a
11
a
22
a
nn
2
Prin urmare pentru rezolvarea sistemului (1) vom presupunem ca:
det A 6= 0 a
ii
6= 0 i = 1, 2, . . . , n
Vom considera nt ai cazul c and matricea A este inferior triunghiulara.
Sistemul (1) are forma:
a
11
x
1
= b
1
a
21
x
1
+ a
22
x
2
= b
2
.
.
.
a
i1
x
1
+ a
i2
x
2
+ + a
ii
x
i
= b
i
.
.
.
a
n1
x
1
+ a
n2
x
2
+ + a
ni
x
i
+ + a
nn
x
n
= b
i
Necunoscutele x
1
, x
2
, ..., x
n
se deduc folosind ecuat iile sistemului de la
prima catre ultima.
Din prima ecuat ie se deduce x
1
:
x
1
=
b
1
a
11
(2)
Din a doua ecuat ie, folosind (2), obt inem x
2
:
x
2
=
b
2
a
21
x
1
a
22
Cand ajungem la ecuat ia i:
a
i1
x
1
+ a
i2
x
2
+ + a
ii1
x
i1
+ a
ii
x
i
= b
i
folosind variabilele x
1
, x
2
,...,x
i1
calculate anterior, avem:
x
i
=
b
i
a
i1
x
1
a
ii1
x
i1
a
ii
Din ultima ecuat ie se deduce x
n
astfel:
x
n
=
b
n
a
n1
x
1
a
n2
x
2
a
nn1
x
n1
a
nn
3
Algoritmul de calcul a solut iei sistemelor (1) cu matrice inferior triunghi-
ulara este urmatorul:
x
i
=
(b
i

i1
P
j=1
a
ij
x
j
)
a
ii
, i = 1, 2, . . . , n 1, n (3)
Acest algoritm poarta numele de metoda substitut iei directe.
Vom considera, n continuare sistemul (1) cu matrice superior triunghiu-
lara:
a
11
x
1
+ + a
1i
x
i
+ + a
1n1
x
n1
+ a
1n
x
n
= b
1
.
.
.
a
ii
x
i
+ + a
in1
x
n1
+ a
in
x
n
= b
i
.
.
.
a
n1n1
x
n1
+ a
n1n
x
n
= b
n1
a
nn
x
n
= b
n
Necunoscutele x
1
, x
2
,...,x
n
se deduc pe r and, folosind ecuat iile sistemului de
la ultima catre prima.
Din ultima ecuat ie gasim x
n
:
x
n
=
b
n
a
nn
(4)
Folosnd valoarea lui x
n
dedusa mai sus, din penultima ecuat ie a sistemului
obt inem:
x
n1
=
b
n1
a
n1n
x
n
a
n1n1
Cand ajungem la ecuat ia i:
a
ii
x
i
+ a
ii+1
x
i+1
+ + a
in
x
n
= b
i
se cunosc deja x
i+1
,x
i+2
,..., x
n
si deducem:
x
i
=
b
i
a
ii+1
x
i+1
a
in
x
n
a
ii
Din prima ecuat ie gasim valoarea lui x
1
:
x
1
=
b
1
a
12
x
2
a
1n
x
n
a
11
4
Procedeul descris mai sus poarta numele de metoda substitut iei inverse pentru
rezolvarea sistemelor liniare cu matrice superior triunghiulara:
x
i
=
(b
i

n
P
j=i+1
a
ij
x
j
)
a
ii
, i = n, n 1, . . . , 2, 1 (5)
Descompunere LU
Teorema
Fie A R
nn
o matrice reala patratica de dimensiune n astfel ncat
det A
k
6= 0, k = 1, . . . , n, unde A
k
= (a
ij
)
i,j=1,...,k
. Atunci exista o unica
matrice inferior triunghiulara L = (l
ij
)
i,j=1,...,n
si o unica matrice superior
triunghiulara U = (u
ij
)
i,j=1,...,n
cu u
ii
= 1, i = 1, . . . , n astfel ncat
A = LU (6)
(demonstrat ia se face prin induct ie dupa n dimensiunea matricii A)
Algoritmul de calcul al descompunerii LU
Fie A R
nn
o matrice reala patratica de dimensiune n care satisface
ipotezele teoremei de mai sus. Algoritmul de calcul al matricilor L si U are
n etape. La ecare pas se determina simultan c ate o coloana din matricea U
si cate o linie din matricea L.
Pasul p (p = 1, 2, . . . , n)
Se determina elementele coloanei p ale matricii U , u
ip
, i = 1, . . . , p 1,
u
pp
= 1 si elementele liniei p ale matricii L, l
pi
, i = 1, . . . , p.
Sunt cunoscute de la pasii anteriori elementele primelor p 1 linii din L
(elemente l
kj
cu k = 1, . . . , p 1) si elementele primelor p 1 coloane din U
(elemente u
ik
cu k = 1, . . . , p 1).
5
Calculul elementelor coloanei p din matricea U : u
ip
i = 1, . . . , p 1
(u
pp
= 1, u
ip
= 0, i = p + 1, . . . , n)
a
ip
=
n
X
k=1
l
ik
u
kp
= (l
ik
= 0, k = i + 1, . . . , n) =
=
i
X
k=1
l
ik
u
kp
= l
ii
u
ip
+
i1
X
k=1
l
ik
u
kp
Daca l
ii
6= 0 putem calcula elementele coloanei p a matricii U astfel:
u
ip
=
(a
ip

i1
X
k=1
l
ik
u
kp
)
l
ii
, i = 1, . . . , p1, u
pp
= 1, u
ip
= 0 i = p+1, . . . , n (7)
( u
kp
, k = 1, . . . , i 1 sunt elemente de pe coloana p a matricii U calculate
anterior n pasul curent iar l
ik
, i = 1, . . . , p1, k = 1, . . . , i 1 sunt elemente
cunoscute de pe liniile din L ind calculate la pasii anteriori)
Daca avem un l
ii
= 0, calculele se opresc, descompunerea LU nu poate
calculata n acest caz - matricea A are un minor nul, det A
p
= 0.
Calculul elementelor liniei p din matricea L: l
pi
, i = 1, . . . , p
(l
pi
= 0 , i = p + 1, . . . , n)
a
pi
=
n
X
k=1
l
pk
u
ki
= (u
ki
= 0, k = i + 1, . . . , n, u
ii
= 1) =
=
i
X
k=1
l
pk
u
ki
= l
pi
1 +
i1
X
k=1
l
pk
u
ki
Pentru i = 1, . . . , p avem:
l
pi
= a
pi

i1
X
k=1
l
pk
u
ki
, i = 1, . . . , p l
pi
= 0 i = p + 1, . . . , n (8)
(elementele l
pk
, k = 1, . . . , i 1 sunt elemente de pe linia p a matricii L
calculate anterior la pasul p iar u
ki
k = 1, . . . , i1, i = 1, . . . , p sunt elemente
de pe coloane deja cunoscute, ind calculate anterior)
6
Observat ie:
Pentru memorarea matricilor L si U se poate folosi matricea A init iala.
Vom folosi partea strict superior triunghiulara a matricii A pentru a memora
elementele nenule u
ij
ale matricii U cu i = 1, 2, . . . , n, j = i + 1, . . . , n iar
partea inferior triunghiulara a matricii A pentru a memora elementele l
ij
ale
matricii L , i = 1, 2, . . . , n , j = 1, 2, . . . , i. Se observa ca nu am memorat
nicaieri elementele u
ii
= 1 i = 1, . . . , n. Vom t ine cont de acest lucru n la
rezolvarea sistemului superior triunghiular. Calculele (7) si (8) se pot face
direct n matricea A.
7

S-ar putea să vă placă și