Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
Metode directe de solutionare a sistemelor de ecuatii liniare (II)
Metoda inversarii matricei [A]
Pentru ca matricea [A] sa admita inversa este necesar sa fie satisfacute doua conditii: matricea sa fie patratica si determinantul ei sa fie diferit de 0.
Satisfacerea acestor conditii ne permite sa avem relatia:
(1)
In aceasta situatie solutia sistemului initial poate fi obtinuta cu ajutorul relatiei:
(2)
Metoda are dezavantajul unui volum de calcul mare. In aceste conditii, in cazul sistemelor de dimensiune mare se va prefera intotdauna o metoda directa de tipul celor prezentate anterior sau o metoda indirecta.. In cazul sistemelor de dimensiuni mai mici utilizarea inversei matricei [A] este comparabila ca timp de calcul cu celelalte metode.
In cadrul acestei lucrari de laborator se prezinta unul dintre cei mai utilizati algoritmi destinati inversarii matricei [A], si anume algoritmul Gauss - Jordan.
Algoritmul Gauss - Jordan
In cadrul acestui algoritm se aplica matricei [A] o serie de transformari elementare de tipul [Ei] si [Eik] pana la transformarea ei in matrice unitate. Daca acest sir de transformari elementare folosit pentru transformarea matricei [A] in matrice unitate se aplica si matricei unitate [In] aceasta se transforma in inversa matricei initiale.
Aplicarea acestor transformari se face respectand urmatorii pasi:
fiecare coloana k din primele n coloane din matricea extinsa [A*] (matricea [A] se extinde la dreapta cu matricea unitate [In]) urmeaza a fi transformata in coloana a matricei unitate, unde elementul nenul apare in pozitia k. In acest scop coloana k din matricea extinsa [A*] se imparte la elementul diagonal akk:
(3)
Aceste operatii inseamna aplicarea unei succesiuni de transformari elementare [Ei].
obtinerea elementelor nule de pe coloana k:
(4)
Aceste operatii inseamna aplicarea unei succesiuni de transformari elementare [Eik].
In cele ce urmeaza pasii algoritmului vor fi formalizati din punct de vedere al programarii.
Definirea sistemului de ecuatii liniare: rangul n, matricea [A] si vectorul [b]; Extinderea matricei [A] la dreapta cu matricea unitate [In]: A(i, j+1) = 0 i, j = 1,, n A(i, i+n) = 1 i, j = 1,, n Inversarea matricei [A]: se considera pe rand primele n coloane din matricea extinsa care se transforma in coloane ale matricei unitate. for k = 1:n o se executa pivotarea partiala pe coloana k o obtinerea elementului diagonal unitar pe coloana k: for j = 2*n: -1 :k a (k , j) = a (k , j) / a (k , k); end o obtinerea elementelor nule de pe coloana k for i = 1:n if i = k for j = 2*n: -1 :k a(i , k) = a(i , k) - a(i , j)*a(j , k); end end end end caculul necunoscutelor problemei: for i = 1:n x(i) = 0; for j = 1:n x(i) = x(i) + a(i , j+n)*b(j); end end Afisarea solutiei: x(i), i = 1, , n |
Pasii pivotarii partiale, din punct de vedere al programarii sunt descrisi in continuare.
initializarea liniei in care apare noul pivot: Lmax = k; stabilirea liniei in care apare apare elementul subdiagonal max in valoare absoluta: for i = k + 1 : n if abs(A(Lmax , k)) < abs(A(i , k)) Lmax = i; end end efectuarea testului de singularitate al matricei [A]: if A(Lmax , k) == 0 break; end se aduce noul pivot pe diagonala (prin schimbarea liniilor Lmax si k in matricea [A]): if Lmax k for j = 1:n A(Lmax , j) = A(k , j); A(k , j) = A(Lmax , j); b(Lmax) = b(k); b(k) = b(Lmax); end end |
Mersul lucrarii
Se studiaza textul lucrarii si metoda de rezolvare numerica a sistemului de ecuatii liniare.
Se elaboreaza programul de calcul.
Se testeaza programul de calcul prin compararea solutiei obtinute cu cea determinata utilizand functia Matlab inv.
Copyright © 2024 - Toate drepturile rezervate