Documente Academic
Documente Profesional
Documente Cultură
METODE NUMERICE
Metode de descompunere LU
Metoda substitutiei directe pentru rezolvarea sistemelor inferior triunghiulare Folosind metoda substututiei directe rezolvati sistemul de ecuatii liniare Ly = b, unde
0 0.9
0 0
0 0 0
0.6 0.8
Originea indicilor
Dimensiunea sistemului
n := rows ( L)
n=4
Varianta 1. Rezolvarea sistemului inferior triunghiular Ly = b prin scrierea directa a formulelor de calcul. bi y1 := b1 L1 , 1 i := 2 .. n yi :=
j=1
i 1
Li , j y j
Li , i
j=1
Li , j y j
Li , i
y := LT ( L , b , n)
Verificarea solutiei
0 0 L y b = 0 0
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda substitutiei inverse pentru rezolvarea sistemelor superior triunghiulare Folosind metoda substitutiei inverse rezolvati sistemul de ecuatii liniare Ux =y, unde
2.3 0 0 5.4 U := 0 0 0 0
Solutie. Originea indicilor
Dimensiunea sistemului
n := rows ( U)
Varianta 1. Rezolvarea sistemului superior triunghiular Ux = y prin scrierea directa a formulelor de calcul. yi xn := yn Un , n i := n 1 .. 1 xi :=
j = i+ 1
Ui , j x j
Ui , i
j = i+ 1
U i , j x j
Ui , i
x := UT ( U , y , n)
Verificarea solutiei
0 0 U x y = 0 0
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Doolittle in Mathcad Rezolvati sistemul de ecuatii liniare de mai jos folosind metoda Doolittle. 3 x1 + x2 x3 + 2 x4 = 6 5 x1 + x2 + 3 x3 4 x4 = 12 2 x1 + x3 x4 = 1 x1 5 x2 + 3 x3 3 x4 = 3 Solutie. ORIGIN 1 Matricea sistemului Vectorul termenilor liberi
3 5 A := 2 1
1 1 0
1 2 3 4 1 1
5 3 3 n := cols ( A )
6 12 b := 1 3
n=4
Dimensiunea sistemului
0 0 lu ( A) = 0 1
0 1 0
0 1
0 0 1
0 2 0
0 0 1 0.5
0.2 0.333 1 0 0
Matricea lu(A) contine trei matrice P, L si U, care verifica egalitatea PA = LU. Extragem aceste submatrice din matricea lu(A).
P := submatrix ( lu ( A) , 1 , 4 , 1 , 4)
0 0 P= 0 1
0 1 0 0 0 1 1 0 0 0 0 0
Matricea inferior triunghiulara L (cu elementele de pe diagonala principala egale cu 1). 0 0 1 0.5 1 0 L= 2.5 0.2 1 1.5 0.2 0.333 0 0 0 1
L := submatrix ( lu ( A) , 1 , 4 , 5 , 8)
Nicolae Danet
METODE NUMERICE
U := submatrix ( lu ( A) , 1 , 4 , 9 , 12)
2 0 U = 0 0
Verificarea descompunerii
0 0 P A L U = 0 0
Obtinem astfel sistemul LUx = c. Notam y = Ux si rezolvam mai intai sistemul inferior triunghiular Ly = c. LT ( L , c , n) := y1 c1 L1 , 1
i 1
for i 2 .. n yi ci y y := LT ( L , c , n)
j=1
Li , j y j
1 2.5 y= 9 2
Observatie. In formulele de mai sus am tinut seama ca elementele Li,i de pe diagonala principala sunt egale cu 1.
Nicolae Danet
METODE NUMERICE
j = i+ 1
U i , j x j
Ui , i
1 1 x= 2 3
Verificarea solutiei
0 0 A x b = 0 0
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Crout Folosind metoda Crout de descompunere LU, determinati solutia sistemului liniar Ax = b, unde
3 5 A := 2 1
Solutie. ORIGIN 1
1 1 0
1 2 3 4 1 1
5 3 3
6 12 b := 1 3
Pentru scrierea elementelor matricei A cu litera mica renotam Dimensiunea sistemului n := cols ( A ) n=4 i := 1 .. n
a := A
Li , 1 := ai , 1
3 5 L= 2 1
Elementele primei linii a matricei U U1 , 1 := 1 j := 2 .. n U 1 , j := a1 , j L1 , 1
Linia 2 din U
ak , j Li , s U s , k Uk , j :=
Li , k := ai , k
s=1
s=1
L k , s U s , j
Lk , k
Nicolae Danet
METODE NUMERICE
U =
Linia 3 din L
j := k + 1 .. n
k 1 k 1
ak , j Li , s U s , k Uk , j :=
Li , k := ai , k
s=1
s=1
L k , s U s , j
Lk , k
U k , k := 1
Li , k := ai , k
s=1
Li , s U s , k
Nicolae Danet
METODE NUMERICE
Verificarea descompunerii
0 0 A L U = 0 0
0 0 0 0 0 0 0 0 0 0 0 0
for i 2 .. n bi yi y
j=1
Li , j y j
Li , i
y := LT ( L , b , n)
j = i+ 1
U i , j x j
Ui , i
x := UT ( U , y , n)
1 1 x= 2 3
Verificarea solutiei
0 0 A x b = 0 0
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Crout Folosind metoda Crout de descompunere LU, determinati solutia sistemului liniar Ax = b, unde
3 5 A := 2 1
Solutie. ORIGIN 1
1 1 0
1 2 3 4 1 1
5 3 3
6 12 b := 1 3
Pentru scrierea elementelor matricei A cu litera mica renotam Dimensiunea sistemului Vezi pagina urmatoare! n := cols ( A ) n=4
a := A
Nicolae Danet
METODE NUMERICE
Subprogram pentru descompunerea matricei A prin metoda Crout. Crout ( A , n) := for i 1 .. n Li , 1 ai , 1 U1 , 1 1 for j 2 .. n U1 , j a1 , j L1 , 1
for k 2 .. n 1 for i k .. n
k 1
Li , k ai , k Uk , k 1 for j k + 1 .. n
s=1
Li , s U s , k
k 1
ak , j Uk , j
n 1
s=1
Lk , s U s , j
Lk , k
Li , n ai , n Un , n 1
s=1
L i , s U s , n
B augment ( L , U) 0 0 0 3 5 2.667 0 0 Crout ( A , n) = 2 0.667 2 0 1 5.333 6 2.5 1 0.333 0.333 0.667 0 0 0 1 0 0 0.5 1 0 0.25 1.25 1
Matricele obtinute in urma descompunerii L := submatrix ( Crout ( A , n) , 1 , n , 1 , n) 0 0 0 3 5 2.667 0 0 L= 2 0.667 2 0 1 5.333 6 2.5 U := submatrix ( Crout ( A , n) , 1 , n , n + 1 , 2 n)
Nicolae Danet
METODE NUMERICE
Verificarea descompunerii
0 0 A L U = 0 0
0 0 0 0 0 0 0 0 0 0 0 0
for i 2 .. n bi yi y
j=1
Li , j y j
Li , i
y := LT ( L , b , n)
j = i+ 1
U i , j x j
Ui , i
x := UT ( U , y , n)
1 1 x= 2 3
Verificarea solutiei
0 0 A x b = 0 0
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Cholesky in Mathcad Folosind metoda Cholesky (metoda radacinii patrate), rezolvati sistemul de ecuatii liniare Ax = b, unde
0.42 0.54 0.66 1.00 0.32 0.44 0.32 1.00 0.22 0.44 0.22 1.00
n := cols ( A)
n=4
Metoda Cholesky se aplica in cazul in care matricea simetrica A este pozitiv definita. Faptul ca A este simetrica se observa imediat.
0 T 0 AA = 0 0
0 0 0 0 0 0 0 0 0 0 0 0
Faptul ca A este pozitiv definita nu se poate verifica cu usurinta inaintea aplicarii metodei. De regula, se aplica metoda. Daca aceasta functioneaza, atunci matricea este intr-adevar pozitiv definita. L := cholesky ( A) 0 0 0 1 0.42 0.908 0 0 L= 0.54 0.103 0.835 0 0.66 0.179 0.185 0.706 Notam U := L
T
Nicolae Danet
METODE NUMERICE
Verificarea descompunerii
0 0 A L U = 0 0
0 0 0 0 0 0 0 0 0 0 0 0
for i 2 .. n bi yi y
j=1
Li , j y j
Li , i
y := LT ( L , b , n)
j = i+ 1
U i , j x j
Ui , i
x := UT ( U , y , n)
Verificarea solutiei
0 0 A x b = 0 0
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Cholesky (pas cu pas) Folosind metoda Cholesky (metoda radacinii patrate), rezolvati sistemul de ecuatii liniare Ax = b, unde
0.42 0.54 0.66 1.00 0.32 0.44 0.32 1.00 0.22 0.44 0.22 1.00
Pentru a scrie elementele matricei A cu litera mica, renotam Dimensiunea matricei sistemului ORIGIN 1 Elementele primei linii U 1 , 1 := a1 , 1 j := 2 .. n n := cols ( A)
U1 , j :=
a1 , j U1 , 1
ak , j
U k , k :=
ak , k
s=1
( Us , k) 2
U k , j :=
s=1
( Us , k Us , j)
Uk , k
U =
k := 3
k 1
ak , j
U k , k :=
ak , k
s=1
( Us , k) 2
U k , j :=
s=1
( Us , k Us , j)
Uk , k
Nicolae Danet
METODE NUMERICE
k := 4
U k , k :=
ak , k
s=1
( Us , k) 2
0 0 0 1 0.42 0.908 0 0 L= 0.54 0.103 0.835 0 0.66 0.179 0.185 0.706 Verificarea descompunerii
0 0 A L U = 0 0
0 0 0 0 0 0 0 0 0 0 0 0
for i 2 .. n bi yi y
j=1
Li , j y j
Li , i
Nicolae Danet
METODE NUMERICE
y := LT ( L , b , n)
j = i+ 1
U i , j x j
Ui , i
x := UT ( U , y , n)
Verificarea solutiei
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Cholesky programata Folosind metoda Cholesky (metoda radacinii patrate), rezolvati sistemul de ecuatii liniare Ax = b, unde
0.42 0.54 0.66 1.00 0.32 0.44 0.32 1.00 0.22 0.44 0.22 1.00
for k 2 .. n 1 vk ak , k Uk , k
s=1
( Us , k) 2
vk if vk > 0
ak , j Uk , j
n 1
s=1
U s , k Us , j
Uk , k
vn an , n Un , n
s=1
( Us , n) 2
vn if vn > 0
Nicolae Danet
METODE NUMERICE
U := SCholesky ( A , n)
L := U
Verificarea descompunerii
0 0 A L U = 0 0
0 0 0 0 0 0 0 0 0 0 0 0
j=1
Li , j y j
y := LT ( L , b , n)
Li , i
for i n 1 .. 1 yi xi x
j = i+ 1
U i , j x j Verificarea solutiei
Ui , i
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Gauss fara pivotare Rezolvati sistemul de ecuatii liniare Ax = b folosind metoda lui Gauss, unde
1.0 0.1 1.0 5.5 4.0 1.0 4.0 0.2 2.5 0.5 2.2 5.0 n := rows ( A ) ORIGIN 1
Metoda lui Gauss se poate aplica fara pivotare daca matricea sistemului este tare diagonal dominanta. Verificam mai intai daca matricea A din acest exemplu are acesta proprietate.
i := 1 .. n
di := A i , i
j=1
if ( j i , Ai , j , 0)
di =
0.4 0.6 0.5 1.3
Deoarece toate diferentele di sunt strict pozitive matricea A este tare diagonal dominanta. O varianta programata a acestei verificari, necesara pentru matricele mari, este urmatoarea: MTDD ( A , n) := for i 1 .. n di A i , i
j=1
if ( j i , Ai , j , 0)
( error ( "Matricea nu este tare diagonal dominanta" ) ) if di 0 continue otherwise "Matrice tare diagonal dominata" MTDD ( A , n) = "Matrice tare diagonal dominata"
Nicolae Danet
METODE NUMERICE
Subprogramul de mai jos transforma matricea A intr-una superior triunghiulara. GUfp ( A , b , n) := for k 1 .. n 1 for i k + 1 .. n Mi , k Ai , k Ak , k
for j k + 1 .. n A i , j A i , j Mi , k A k , j Ai , k 0 bi bi Mi , k bk A Matricea superior triunghiulara U obtinuta: 0.1 1 2.5 1 0 5.66 4.016 0.66 U = 0 0 4.783 2.189 0 0 6.298 0
U := GUfp ( A , b , n)
bb := Gbfp ( A , b , n)
Nicolae Danet
METODE NUMERICE
for i n 1 .. 1 bbi xi x
j = i+ 1
( Ui , j x j)
Ui , i
Solutia sistemului
x := UT ( U , bb , n)
Verificarea solutiei
0 1.776 10 15 A x b = 0 15 1.776 10
Descompunerea LU a unei matrice folosind metoda Gauss Matricea pivotilor (multiplicatorilor) completata cu valoarea 1 pe diagonala principala. GLfp ( A , b , n) := for k 1 .. n 1 for i k + 1 .. n Mi , k Ai , k Ak , k
for j k + 1 .. n Ai , j A i , j Mi , k A k , j Ai , k 0 for k 1 .. n Mk , k 1 M
Nicolae Danet
METODE NUMERICE
Aceasta este o matrice inferior triunghiulara notata L. L := GLfp ( A , b , n) 0 0 1 0.16 1 0 L= 0.12 0.198 1 0.4 0.106 0.442 0 0 0 1
Cele doua matrice L si U, obtinute prin metoda Gauss, determina o descompunere de tip LU a matricei A. Descompunerea este de tip Doolittle deoarece elementele de pe diagonala principala a matricei L sunt egale cu 1. Verificarea descompunerii
0 0 A L U = 0 0
0 0 0 0 0 0 0 0 0 0 0 0
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Gauss fara pivotare folosind matricea extinsa Rezolvati sistemul de ecuatii liniare Ax = b folosind metoda lui Gauss, unde
1.0 0.1 1.0 5.5 4.0 0.5 1.0 4.0 2.2 0.2 2.5 5.0 n := rows ( A )
Originea indicilor
Verificam daca matricea A este tare diagonal dominanta. In caz afirmativ metoda Gauss se poate aplica fara pivotare.
i := 1 .. n
di := A i , i
j=1
if ( j i , Ai , j , 0)
di =
0.4 0.6 0.5 1.3
Deoarece toate diferentele di sunt strict pozitive matricea A este tare diagonal dominanta. O varianta programata a acestei verificari, necesara pentru matricele mari, este urmatoarea: MTPD ( A , n) := for i 1 .. n di Ai , i
j=1
if ( j i , A i , j , 0)
( error ( "Matricea nu este tare diagonal dominanta" ) ) if di 0 continue otherwise "Matrice tare diagonal dominata" MTPD ( A , n) = "Matrice tare diagonal dominata" Deoarece matricea A este tare diagonal dominanta, putem aplica metoda Gauss fara pivotare. Definim matricea extinsa a sistemului C := augment ( A , b)
SL_10_Metoda_Gauss_fara_pivotare_cu_matrice_extinsa.mcd / Pag. 1 din 2
Nicolae Danet
METODE NUMERICE
for j k + 1 .. n + 1 Ci , j Ci , j Mi , k Ck , j Ci , k 0 C 0.1 1 9.8 2.5 1 0 5.66 4.016 0.66 7.968 U= 0 0 4.783 2.189 7.199 0 0 6.298 7.142 0
U := GU ( C , n)
Ultima coloana a matricei U este vectorul liber trasformat. Rezolvarea sistemului superior triunghiular obtinut: UT ( U , n) := xn U n , n+ 1 Un , n
for i n 1 .. 1 U i , n+ 1 xi x
j = i+ 1
U i , j x j
Ui , i
Solutia sistemului
x := UT ( U , n)
Verificarea solutiei
0 1.776 10 15 A x b = 0 15 1.776 10
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Gauss cu pivotare partiala folosind matricea extinsa Rezolvati sistemul de ecuatii liniare Sx = b folosind metoda lui Gauss, unde
1 2 S := 3 1
Solutie.
1 1 1 1 1 2 2 3 1
4 1 b := 3 4
ORIGIN 1 n := rows ( S) n=4
Verificam daca matricea sistemului S este tare diagonal dominanta. MTPD ( A , n) := for i 1 .. n di Ai , i
j=1
if ( j i , A i , j , 0)
( error ( "Matricea nu este tare diagonal dominanta" ) ) if di 0 continue otherwise "Matrice tare diagonal dominata" MTPD ( S , n) = Deoarece matricea sistemului nu este tare diagonal dominanta vom folosi metoda Gauss cu pivotare. Matricea extinsa a sistemului A := augment ( S , b)
Subprogramul Gauss cu pivotare este scris pe pagina urmatoare pentru a se putea urmari cu mai mare claritate instructiunile de programare.
Nicolae Danet
METODE NUMERICE
Gpivpar ( A , n) :=
for k 1 .. n 1 piv A k , k ipiv k for i k + 1 .. n if piv < Ai , k piv A i , k ipiv i continue otherwise for j k .. n + 1 sk , j Ak , j Ak , j Aipiv , j Aipiv , j sk , j for i k + 1 .. n mi , k Ai , k Ak , k
Nicolae Danet
METODE NUMERICE
j = i+ 1
U i , j x j
Ui , i
x := UT ( U , n)
1 2 x= 0 1 0 0 S x b = 0 0
Verificarea solutiei
Nicolae Danet
METODE NUMERICE
Metode de descompunere LU
Metoda Gauss cu pivotare partiala folosind matricea extinsa Rezolvati sistemul de ecuatii liniare Sx = b folosind metoda lui Gauss, unde
for k 1 .. n 1 piv A k , k if Ak , k 0 otherwise for i k + 1 .. n i k if Ai , k 0 ipiv k for i k + 1 .. n if piv < A i , k piv A i , k ipiv i continue otherwise for j k .. n + 1 sk , j A k , j A k , j Aipiv , j A ipiv , j sk , j for i ( k + 1) .. n mi , k Ai , k Ak , k
for j k + 1 .. n + 1 Ai , j A i , j mi , k Ak , j Ai , k 0 Uk A Upas
SL_12_Metoda_Gauss_cu_pivotare_cu_matrice_extinsa_(matrice intermediare).mcd / Pag. 1 din 2
Nicolae Danet
METODE NUMERICE
0 1 A = 2 3
pas := 1 .. n 1
5 15 20 0
10 0
3 0 0 0 3 0 GE ( pas) = 0 0 3 0 0 0
6.25 10 2.083
20 25.833 61.167 37.37 0 6.25 31.3 20.97 20 25.833 61.167 37.37 0 3.542 9.792 10.697 0 17.292 83.808 25.742 0 6.25 31.3 20.97 20 25.833 61.167 37.37
Matricea superior triunghiulara plus vectorul termenilor liberi (ultima coloana) U := submatrix ( GE ( n 1) , 1 , n , 1 , n + 1) Rezolvarea sistemului superior triunghiular UT ( U , n) := xn U n , n+ 1 Un , n Solutia sistemului
for i n 1 .. 1 U i , n+ 1 xi x
j = i+ 1
U i , j x j
x := UT ( U , n)
Ui , i
Verificarea solutiei