Administratie | Alimentatie | Arta cultura | Asistenta sociala | Astronomie |
Biologie | Chimie | Comunicare | Constructii | Cosmetica |
Desen | Diverse | Drept | Economie | Engleza |
Filozofie | Fizica | Franceza | Geografie | Germana |
Informatica | Istorie | Latina | Management | Marketing |
Matematica | Mecanica | Medicina | Pedagogie | Psihologie |
Romana | Stiinte politice | Transporturi | Turism |
Operatiile aritmetice cu matrici
In MATLAB operatiile aritmetice cu matrici (consideram matricile date A si B) au urmatoarea sintaxa:
» A+B -adunare
» A - B -scadere
» A*B -inmultire
» A/B -impartire la dreapta
» AB -impartire la stanga
» A^B -ridicare la putere
» A' -transpunere
iar, operatiile aritmetice cu tablouri de valori (consideram tablourile de valori A si B) au urmatoarea sintaxa:
» A . *B -inmultire
» A . /B -impartire la dreapta
» A . B -impartire la stanga
» A . ^B -ridicare la putere
» A . ' -transpunere
Versiunea MATLAB 6 dispune de functii specifice pentru realizarea operatiilor aritmetice cu matrici, respectiv, cu tablouri de valori:
a)-Functii MATLAB specifice operatiilor cu matrici
» A+B - plus(A, B)
» A - B - minus(A, B)
» A*B - mtimes(A, B)
» A/B - mrdivide(A, B)
» AB - mldivide(A, B)
» A^B - mpower(A, B)
» A' - ctranspose(A)
b)- Functii MATLAB specifice operatiilor cu tablouri de valori
A . *B - times(A, B)
A . /B - rdivide(A, B)
A . B - ldivide(A, B)
A . ^B - power(A, B)
A . ' - transpose(A)
Adunarea si scaderea matricilor
Aceste operatii se pot realiza daca este respectata conditia ca matricile sa aiba aceeasi dimensiune (exclus cazul in care se doreste adunarea sau scaderea dintre o matrice si un scalar, unde MATLAB realizeaza operatia in modul urmator: scalarul este adunat fiecarui element al matricei, fiind respectata regula de baza, din algebra elementara, in acest caz) .
Ex . 1:
Fie: a= b=; c=2 .
Sa se calculeze:a+b; a-b;a+c .
Rezolvare:Cu secventa MATLAB:
» a=[1, 2;3, 4];b=[5, 6;7, 8];c=2;
» a1=a+b [Enter]
a1 =
6 8
10 12
» a2=a-b [Enter]
a2 =
-4 -4
-4 -4
» a3=a+c [Enter]
a3 =
3 4
5 6
Ex . 2:
Fie: m= n=
Sa se calculeze: M=m+n
Rezolvare: Cu secventa MATLAB
» m=[1, 2;3, 4];n=[pi, sqrt(2), 4^(1/3);exp(log10(8)), log(7), 1-exp(1)] ;
» M=m+n
Rezultatul afisat de MATLAB este:
??? Error using ==> +
Matrix dimensions must agree .
(Eroare la utilizarea operatorului ==> " + "
Dimensiunile matricelor trebuie sa fie identice
In MATLAB, versiunea 6 este posibila adunarea unor matrici ale caror elemente sunt caractere alfanumerice, declarate ca simboluri . De exemplu, fie doua matrici : si . Pentru a se calcula suma X=B+A, se declara elementele matricelor, ca simboluri literale:
» syms a11 a12 a13 a21 a22 a23 a31 a32 a33 b11 b12 b13 b21 b22 b23 b31 b32 b33;
apoi se declara matricele A, respectiv B:
» A = [a11 a12 a13; a21 a22 a23; a31 a32 a33]
A =
[ a11, a12, a13]
[ a21, a22, a23]
[ a31, a32, a33]
» B=[b11 b12 b13; b21 b22 b23; b31 b32 b33]
B =
[ b11, b12, b13]
[ b21, b22, b23]
[ b31, b32, b33]
Cu secventa MATLAB urmatoare se determina matricea X:
» X=A+B
X =
[ a11+b11, a12+b12, a13+b13]
[ a21+b21, a22+b22, a23+b23]
[ a31+b31, a32+b32, a33+b33]
Nota: De observat modul de afisare a matricilor simbolice: fiecare linie este incadrata intre paranteze drepte .
Produsul vectorial si produsul scalar al doi vectori
Produsul vectorilor (matrici cu o singura linie, respectiv o singura coloana), este definit diferit decat pentru matrici . Astfel doi vectori (a, b), avand aceeasi lungime, se pot inmulti in orice ordine : a*b, respectiv b*a . De exemplu, considerand doi vectori dati prin componente :
» a=[1;2;3]
a =
1
2
3
» b=[5, 6, 7]
b =
5 6 7
produsul vectorial al acestora este :
» prod_vect=a*b
prod_vect =
5 6 7
10 12 14
15 18 21
iar produsul scalar al celor doi vectori este :
» prod_scalar=b*a
prod_scalar =
38
Daca vectorii (a, b) sunt dati simbolic:
» syms a11 a21 a31 b11 b12 b13
» a_simbolic=[a11 ;a21; a31]
a_simbolic =
[ a11]
[ a21]
[ a31]
» b_simbolic=[b11, b12, b13]
b_simbolic =
[ b11, b12, b13]
atunci produsul vectorial, respectiv produsul scalar, al celor doi vectori sunt:
» prod_vect_simbolic=a_simbolic*b_simbolic
prod_vect_simbolic =
[ a11*b11, a11*b12, a11*b13]
[ a21*b11, a21*b12, a21*b13]
[ a31*b11, a31*b12, a31*b13]
» prod_scalar_simbolic=b_simbolic*a_simbolic
prod_scalar_simbolic =
a11*b11+a21*b12+a31*b13
Produsul matricilor
Produsul a doua matrici se simbolizeaza cu caracterul " * " (tastele " Shift + 8 " de pe tastatura literala, apasate simultan, sau caracterul corespunzator de pe tastatura numerica) .
Pentru ca produsul a doua matrici sa se poata realiza este necesar a se indeplini urmatoarea conditie esentiala: numarul de coloane ale primei matrici sa fie egal cu numarul de linii ale celei de-a doua matrici . Astfel, daca se inmultesc doua matrici a(m, n) si b(n, p) se obtine o matrice c(m, p), aceasta regula aplicandu-se si in cazul inmultirii unei matrici cu un vector-linie sau vector-coloana) .
Ex . 3:
Fie: ; c=2 .
Sa se calculeze produsele : a∙b; b∙a; a∙c; b∙c .
Rezolvare:Cu secventa MATLAB:
»a=[1, 2;3, 4;5, sqrt(8);i, pi];b=[sqrt(3), -3, 2*i, 1-2*i, 7;8, 9, 0, 1, 6];c=2;
» a1=a*b [Enter]
» a2=b*a [Enter]
??? Error using ==> *
Inner matrix dimensions must agree .
» a3=a*c [Enter]
» a4=b*c [Enter]
se obtin rezultatele:a1; a3; a4 .
Observatie: In cazul produsului a2=b*a, MATLAB afiseaza mesajul:
??? Error using ==> *
Inner matrix dimensions must agree .
(intrucat dimensiunile matricelor implicate in produs nu respecta conditia impusa !
Inmultirea a doua matrici simbolice, si . , se realizeaza astfel:
-se declara elementele matricelor, ca simboluri:
» syms a11 a12 a13 a21 a22 a23 a31 a32 a33 b11 b12 b13 b21 b22 b23 b31 b32 b33;
se declara matricele A, respectiv B:
» A = [a11 a12 a13; a21 a22 a23; a31 a32 a33]
A =
[ a11, a12, a13]
[ a21, a22, a23]
[ a31, a32, a33]
» B=[b11 b12 b13; b21 b22 b23; b31 b32 b33]
B =
[ b11, b12, b13]
[ b21, b22, b23]
[ b31, b32, b33]
Cu secventa MATLAB urmatoare se determina matricea-produs X=A*B:
» X=A*B
X=
[a11*b11+b21*a12+a13*b31, b12*a11+a12*b22+a13*b32, b13*a11+b23*a12+a13*b33]
[a21*b11+b21*a22+a23*b31, b12*a21+a22*b22+a23*b32, b13*a21+b23*a22+a23*b33]
[a31*b11+b21*a32+a33*b31, b12*a31+a32*b22+a33*b32, b13*a31+b23*a32+a33*b33]
Impartirea la dreapta
Impartirea la dreapta este simbolizata cu operatorul "/" (slash), si este realizabila numai daca inversa celei de- a doua matrici exista (determinantul acesteia este nenul) si aceasta inversa respecta conditia impusa inmultirii matricelor . Astfel, daca se impart doua matrici a(i, j) si b(m, m) este necesar ca b-1 sa existe si dimensiunea acesteia sa respecte conditia m==j . Impartirea la dreapta, a doua matrici, consta, de fapt, in rezolvarea ecuatiei X*a=b .
Nota :Se cunoaste faptul ca o matrice admite inversa numai daca aceasta este patratica si determinantul este nenul
Exemplu:
Fie: a= b=
Sa se calculeze:a/b; b/a .
Cu secventa MATLAB:
» a=[1, 2;3, 4];b=[5, 6;7, 8];
» a1=a/b [Enter]
a1 =
2 . 0000 -1 . 0000
» a2=b/a [Enter]
a2 =
Exemplu (produsul matricilor cu dimensiuni ne-adecvate):
Fie: a=; b=
Sa se calculeze catul : d=a/b .
Cu secventa MATLAB:
a=[1, 2;3, 4] ; b=[sqrt(3), -3, 2*i, 1-2*i, 7;8, 9, 0, 1, 6] ;
» d=a/b [Enter]
MATLAB va afisa urmatorul raspuns:
??? Error using ==> /
Matrix dimensions must agree .
Pentru impartirea la dreapta, a doua matrici simbolice, si , se procedeaza astfel:
se declara elementele matricelor, ca simboluri literale
» syms a11 a12 a21 a22 b1 b2;
se declara matricele A, respectiv B:
» A = [a11 a12; a21 a22]
A =
[ a11, a12]
[ a21, a22]
» B=[b1 b2]
B =
[ b1 b2]
Cu secventa, MATLAB, urmatoare se determina matricea- X=B/A:
» X=B/A
X =
[ -(a21*b2-b1*a22)/(a11*a22-a12*a21), (a11*b2-a12*b1)/(a11*a22-a12*a21)]
Solutiile sistemului de ecuatii: se obtin cu urmatoarele comenzi
» x1 = X(1)
x1 =
-(a21*b2-b1*a22)/(a11*a22-a12*a21)
» x2 = X(2)
x2 =
(a11*b2-a12*b1)/(a11*a22-a12*a21)
Impartirea la stanga
Operatia de impartire la stanga este simbolizata cu operatorul "" (backslash), reprezentand, in termeni aritmetici, produsul dintre inversa primei matrici si cea de-a doua matrice . Astfel, conditia necesara (dar nu suficienta) pentru ca o matrice a sa se " imparta " la stanga prin matricea b, este ca matricea a sa admita inversa si in plus aceasta inversa trebuie sa indeplineasca si conditia necesara ca doua matrici sa se poata inmulti . Ca o concluzie, se va incerca impartirea la stanga, sau la dreapta, a doua matrici, numai in cazul in care cele doua matrici sunt patratice, si daca matricea, la care se imparte, este nesingulara, conditia pentru inmultire sa fie indeplinita (numarul de coloane ale primei matrici egal cu numarul de linii ale celei de-a doua matrici ) .
Ex . 6:
Fie: a= b=
Sa se calculeze:ab; ba .
Cu secventa MATLAB:
» a=[1, 2;3, 4];b=[5, 6;7, 8];
» a1=ab [Enter]
a1 =
-3 . 0000 -4 . 0000
4 . 0000 5 . 0000
» a2=ba [Enter]
a2 =
5 . 0000 4 . 0000
-4 . 0000 -3 . 0000
In MATLAB, versiunea 6 este posibila impartirea unor matrici ale caror elemente sunt caractere alfanumerice, declarate ca simboluri . De exemplu, fie doua matrici, A si B, ale caror elemente sunt date simbolic A(2x2)=[aij], B(2x3)=[bik]: si . Se cere matricea X=B/A .
Cu secventa MATLAB urmatoare se determina matricea X, ca fiind catul simbolic al matricilor A si B:
»syms a11 a12 a21 a22 b11 b12 b13 b21 b22 b23;
»A = [a11 a12; a21 a22];
»B = [b11 b12 b13;b21 b22 b23];
»X = AB
Produsul Kronecker
Produsul Kronecker este cea mai mare matrice formata din toate produsele posibile realizate intre elementele a doua matrici (nu trebuie confundat "Produsul Kronecker" cu "simbolul Kronecker" sau "delta Kronecker", a carei exprimare este data de:) . Aceasta matrice este utilizata in calculul tensorial, in teoria deformarii elastice, in teoria deformarii plastice, respectiv in calculele aferente analizei cu elemente finite a proceselor de deformare plastica si elasto-vasco-plastica a materialelor . Vectorii spatiali, definiti pe spatiul cu trei dimensiuni , reprezinta marimi reale, de exemplu marimi fizice, care contin trei informatii (trei scalari) . Descrierea unui vector v in baze diferite ai si bi prin coordonatele respective, nu schimba valoarea sa intrinseca (v se numeste si marime invarianta):
Toate marimile invariante se numesc tensori (un exemplu de tensor este tensorul tensiunilor care, dat prin componente, se reprezinta prin matricea componentelor, intr-un sistem de axe x, y, z: , acesta caracterizand starea de eforturi unitare, a unui punct situat pe o suprafata oarecare a corpului supus actiunii unor forte exterioare) . Un scalar este tensor, daca poate fi scris ca produsul scalar u·v a doi vectori:
, unde sunt coordonatele tensorului in raport cu baza gi .
Alte exemple de tensori si deviatori:
- Tensorul sferic al tensiunilor
- Deviatorul tensiunilor
- Invariantii eforturilor unitare
care in functie de tensiunile normale principale sunt :
- Tensorul deformatiilor specifice
;
Produsul Kronecker se realizeaza cu functia MATLAB kron(X, Y), rezultatul fiind obtinut dupa urmatoarea regula de calcul:
De exemplu, produsul Kronecker al doua matrici , este:
» X=[1, 2, 3;4, 5, 6]; Y=[1, 2;3, 4];
» kron(X, Y)
ans =
1 2 2 4 3 6
3 4 6 8 9 12
4 8 5 10 6 12
12 16 15 20 18 24
» kron(Y, X)
ans =
1 2 3 2 4 6
4 5 6 8 10 12
3 6 9 4 8 12
12 15 18 16 20 24
Functia putere atasata unei matrici
Operatia de calcul a puterii unei matrici se simbolizeaza cu operatorul "^" (Shift + 6;):
A=b^c,
Puterea unei matrici (bc)se calculeaza ca produs repetat de c ori al matricei b prin ea insasi:
b^c=b*b*b* . *b
de c ori
Daca b este un scalar iar c este o matrice atunci calculul puterii se realizeaza folosind valorile proprii ale matricei c respectiv ale scalarului b .
Obs . Operatia are sens numai daca matricea b este patratica iar c un scalar .
Ex . 7:
Fie: a= b=3;c= - 3 . Sa se calculeze:a^b; b^a; a^c
» a=[1, 2;3, 4];b=3;c= -3;
» a1=a^b [Enter]
a1 =
37 54
81 118
» a2=b^a [Enter]
a2 =
87 . 8864 127 . 1198
190 . 6797 278 . 5661
» a3=a^c [Enter]
a3 =
-14 . 7500 6 . 7500
10 . 1250 -4 . 6250
Trebuie observat faptul ca a3=a^c, unde c este un scalar negativ, se executa in urmatoarea ordine: se determina inversa matricei a dupa care rezultatul se ridica la puterea |c| (valoarea absoluta a scalarului c) .
Transpunerea matricilor
Transpusa unei matrici x(i, j) (i linii si j coloane), este matricea x1(j, i) (j linii si i coloane), si se determina, in MATLAB, folosind, pentru simbolizarea ope-
ratiei, caracterul apostrof : " ' " . De exemplu, pentru matricea x :
» x=[1, 2, 3;4, 5, 6] ;
transpusa x1 este determinata cu secventa MATLAB:
» x1=x' [Enter]
x1 =
Determinantul unei matrici
Obs . Numai matricile patratice permit calculul determinantului, in timp ce, matricele cu numar de linii diferit de numarul de coloane, « tablourile », permit doar calculul « minorilor » .
Calculul determinantului unei matrici se realizeaza cu functia det( ) si se apeleaza cu sintaxa:
D = det(X)
Ex
Sa se calculeze determinantii urmatoarelor matrici:
.
Cu secventa MATLAB:
» A = [1, 2 ; 3, 4];B = [1, 2, 3 ; 4, 5, 6 ;7, 8, 9] ;
» C=[sqrt(3), -3, 2*i, 1-2*i, 7;8, 9, 0, 1, 6];
» A1 = det(A)
A1 = -2;
» B1 = det(B)
B1 = 0
» C1 = det(C)
In cazul C1 = det(C), MATLAB returneaza urmatorul mesaj de eroare (datorat dimensiunii matricei C):
??? Error using ==> det
Matrix must be square .
??? Eroare la utilizarea functiei det ()
Matricea trebuie sa fie patratica
In MATLAB versiunea 6, este disponibil calculul determinantului unei matrici ale carei elemente sunt simboluri literale declarate cu functia syms . De exemplu, pentru calculul determinantului matricei se poate utiliza urmatoarea secventa :
» syms a b c d;
»D1= det([a, b; c, d])
care returneaza urmatoarea "valoare":
»D1= a*d - b*c
Similar este cazul matricei , unde se poate utiliza urmatoarea secventa:
» A = sym([2/3 1/3;1 1])
A =
[ 2/3, 1/3]
[ 1, 1]
» r = det(A)
r = 1/3
Obs : Determinantul unei matrici este utilizabil in consideratii teoretice si in anumite tipuri de calcule simbolice, dar este, datorita scalarii si erorilor de aproximare, mai putin utilizabil in calcule numerice .
Calculul inversei
Daca o matrice A este patratica si nesingulara (determinantul matricei este nenul), ecuatiile AX = I si X∙A = I (matricea I fiind matricea unitate) au aceeasi solutie, X . Aceasta solutie se numeste inversa matricei A, se noteaza cu A-1 si se calculeaza folosind functia MATLAB inv(A) . Daca matricea A este patratica si nesingulara, atunci, fara a considera erorile de aproximare, X = inv(A)*B ar trebui sa fie, cel putin teoretic, identica cu X = AB iar, Y = B*inv(A) sa fie identica cu Y = B/A . Utilizarea operatorilor aritmetici « impartire la stanga » si « impartire la dreapta » este preferata utilizarii inversei matricei, datorita timpului de calcul mai redus, a . volumului de memorie ceruta si a unor proprietati de detectie a erorilor mai bune . Prin definitie, inversa unei matrici patratice A(i, i), este matriea A-1, care satisface relatia:( A)*(A-1)=I, unde I este matricea unitate (matricea cu elementele de pe diagonala principala egale cu unitatea, respectiv celelalte elemente egale cu zero) . Inversa unei matrici se calculeaza cu functia MATLAB inv (), si se apeleaza cu sintaxa:
Y = inv(X)
Functia se utilizeaza frecvent pentru rezolvarea sistemelor de ecuatii liniare A*x=b, sau X*A=B solutia sistemului este x=inv(A)*b respectiv x=B*inv(A) .
Ex . 9
Se cere inversa matricei: A =
Cu secventa MATLAB:
» A = [2, 1 ; -1, 1] ;
» B = inv(A)
B=
Pseudo-inversa
Matricile rectangulare (tablourile de valori) nu admit inverse si nici calculul determinantilor . Pentru acest tip de matrici se poate utiliza pseudoinversa Moore-Penrose, care se calculeaza cu functia pinv() . De exemplu, pentru matricea se va calcula pseudoinversa cu urmatoarea secventa MATLAB :
»C=[9, 4;2, 8;6, 7] ;
»P=pinv(C)
P =
0 . 1159 -0 . 0729 0 . 0171
-0 . 0534 0 . 1152 0 . 0418
Printr-un calcul simplu se poate observa ca produsul P*C reprezinta matricea unitate de ordinul doi:
»I=P*C
I=
1 . 0000 0 . 0000
0 . 0000 1 . 0000
in timp ce, produsul C*P este o matrice de ordinul 3x3, dar nu matricea unitate :
»Q=C*P
Q=
Rangul matricei
O matrice X (m, n), nenula, are rangul k, daca matricea X are un determinant « minor », de ordin k, nenul, iar toti minorii de ordin mai mare decat k (daca exista) sunt nuli . Rangul unei matrici este, prin urmare, un scalar 1 k min(m, n) . Rangul unei matrici reprezinta numarul de linii sau coloane liniar independente, si se determina cu functia rank( ) . Se apeleaza cu una dintre sintaxele:
r = rank (X) r = rank (X, tol)
Functia rank, apelata cu sintaxa r = rank (X, tol), returneaza numarul de valori singulare ale lui X, mai mari decat parametrul optional tol .
Ex . 10
Sa se determine rangul matricei A =
Din algebra elementara se cunoaste ca intrucat toti minorii de ordinul al treilea ai matricei A sunt nuli:
si, deoarece, exista minori de ordinul al doilea nenuli, A1= , rezulta ca rangul matricei A este: rang A = 2
Acest rezultat se obtine cu secventa MATLAB:
» A = [3, 2, -5, 4;3, -1, 3, -3;3, 5, -13, 11];
» k = rank(A)
care returneaza: k=2
Conditionarea unei matriciImportanta cunoasterii conditionarii unei matrici decurge din faptul ca rezultatele obtinute prin calcul numeric corespund intotdeauna unei probleme perturbate, aceasta datorandu-se, in special erorilor de rotunjire, a calculelor cu precizie ridicata, respectiv, se datoreaza sensibilitatii preciziei de calcul in timpul rezolvarii sistemelor liniare . Determinarea conditionarii are la baza teoria matematica a perturbatiilor . Se spune ca o functie f(x) este rau- conditionata daca pentru un x1 'apropiat' de x, functia f(x1) difera 'mult' de f(x) . Altfel, o functie se spune ca este bine conditionata daca pentru un x1 'apropiat' de x, functia f(x1) este 'apropiata' de f(x) . Trebuie remarcat ca termenii 'apropiat' si 'mult' sunt vagi, motiv pentru care este necesara utilizarea numerelor de conditionare .
Numarul de conditionare indica sensibilitatea solutiei unui sistem de ecuatii liniare fata de perturbatiile generate de calculele cu coeficientii ecuatiilor (calculul inversei matricei coeficientilor necunoscutelor, de exemplu), si da indicatii asupra preciziei rezultatelor la inversarea matricelor si rezolvarea ecuatiilor liniare . O matrice bine-conditionata este o matrice relativ insensibila la mici perturbatii .
Pentru un sistem de ecuatii liniare Ax=b, daca matricea A este cunoscuta si nu este afectata de erori, dar vectorul B, este afectat, atunci, considerand o perturbare a acestuia evaluata la marimea (vectorul perturbatiilor), vectorul solutie x devine , iar sistemul perturbat este :
, sau , deci
Egalitate, in ultima relatie, se obtine numai pentru anumiti vectori . Aplicand norma ambilor membri ai egalitatii Ax=B, se obtine :
,
si, folosind cateva calcule simple de inmultire si identificare, se obtine (presupunand ca ) :
in care A-1 este matricea inversa a lui A, obtinuta prin calcule afectate de erori de rotunjire (adica ) . Astfel, pentru o matrice nesingulara A pozitiv definita se defineste numarul de conditionare calculat ca raportul dintre cea mai mare si cea mai mica valoare proprie a acesteia :
In aceste conditii, relatia de estimare a erorii solutiei devine :
in care masoara incertitudinea relativa existenta in vectorul B (de exemplu, daca elementele vectorului B sunt date cu trei cifre semnificative, atunci este de ordinul 10-3 sau 10-4), iar reprezinta incertitudinea relativa existenta in vectorul x, si este determinata de incertitudinea existenta in vectorul B .
Daca, atat matricea A cat si vectorul B sunt afectati de erori, atunci sistemul se scrie sub forma :
Daca vectorul termenilor liberi este determinat exact si neafectat de erori, iar matricea A are coeficienti perturbati de erori, atunci sistemul Ax=B devine :
,
de unde rezulta :
sau
Ultima relatie, aranjata, devine :
,
pentru care, daca se aplica norma, se obtine :
sau
Din aceasta relatie se observa ca incertitudinea din vectorul solutie x relativa la este marginita de incertitudinea relativa a matricei A, inmultita cu numarul de conditionare al matricei A .
In concluzie, daca numarul de conditionare cond . (A) este mare, atunci perturbatiile mici introduse de A si/sau B pot introduce perturbatii mari in x (problema liniara este slab conditionata, adica solutiile sistemului de ecuatii sunt foarte evident influentate de erorile de calcul ale matricei A, respectiv de datele masurate , adica elementele vectorului B), iar daca numarul de conditionare cond . (A) este mic, atunci perturbatii reduse introduse de A si/sau B pot induce perturbatii mici in vectorul solutiei x (problema liniara este bine conditionata, adica solutiile sistemului de ecuatii sunt neinfluentate de erorile de calcul ale matricei A) . Aceste elemente servesc la corectarea solutiei obtinute din calcul, la alegerea metodei de calcul (tinand seama de numarul si ordinea operatiilor de executat), la modul de reprezentare a informatiei numerice in calculator (in virgula mobila, virgula fixa sau zecimal), la tipul de aritmetica cerut in programul de calcul, precum si la precizia impusa calculelor .
Numarul de conditionare se determina, in MATLAB, cu functia cond() si se apeleaza cu sintaxa:
» cond(X)
O functie mai performanta care permite calculul numarului de conditionare este rcond() si se apeleaza cu sintaxa:
» rcond(X)
Functia MATLAB rcond(X) returneaza estimarea numarului de conditionare al unei matrici X, determinat prin subrutinele LAPACK- Linear Algebra PACKage (exemple de subrutine de tip LAPACK : DLANGE, DGETRF, DGECON, daca matricea este reala, respectiv ZLANGE, ZGETRF, ZGECON, daca matricea este complexa), care reprezinta o biblioteca de subrutine FORTRAN, utilizate de MATLAB pentru rezolvarea problemelor de algebra lineara . In completare la LAPACK, MATLAB utilizeaza si subrutinele BLAS- Basic Linear Algebra Subroutines, care au si rolul de a amplifica viteza de calcul si manevrare a a matricilor mari, respectiv ale subrutinelor LAPACK . Functiile LAPACK sau BLAS pot fi apelate prin fisiere MEX ale utilizatorului .
Daca matricea X este bine conditionata, rcond are valoarea aproximativ 1 . 0, iar daca este slab conditionata, atunci rcond este aproximativ 0, 0 .
Estimarea celui mai mic numar de conditionare se face cu functia condest(), si se apeleaza cu sintaxa:
» condest(x)
Ex . :
Calculati numerele de conditionare pentru sistemul « initial » de ecuatii:
si pentru sistemul 'perturbat':
In MATLAB:
-matricea sistemului initial:
» A1=[6 6 . 917;1 1 . 152];
matricea sistemului « perturbat » :
» A2=[6 6 . 912;1 1 . 152];
-numerele de conditionare :
» C1=cond(A1); c2=cond(A2)
C1=1 . 7234e+004 c2=inf
» D1=condest(A1); d2=condest(A2)
D1=2, 0845e+004 d2=2 . 7129e+017
» R1=rcond(A1); r2=rcond(A2);
R1=5 . 4453e-005 r2=4 . 1842-018
De aici, rezulta ca sistemul este slab conditionat . Acest lucru se verifica si prin rezolvarea celor doua sisteme, cu valori 'apropiate' ale coeficientilor (pentru care exista diferenta la a patra cifra) :
» A1=[6 6 . 917;1 1 . 152];
» A2=[6 6 . 912;1 1 . 152];
» B=[6 . 543; 1 . 095];
» X1=a1b
X1=[ 7 . 3158 -5 . 4000]
» X2=a2b
X2=[-8 . 1041 7 . 0348]*1 . 0e+013
Conditionarea slaba a matricei se reflecta in diferentele foarte mari ale solutiilor: de exemplu, prima solutie, pentru sistemul ne-perturbat, este x1=7, 3158, in timp ce pentru sistemulperturbat, solutia x1= - 8, 1041 · 1013 .
Ex . :
Se vor determina numerele de conditionare pentru sistemul « initial » de ecuatii:
respectiv pentru sistemul 'perturbat':
In Matlab, problema se rezolva cu urmatoarea secventa:
» a=[45, 23 . 123;1, 15]; a1=[45, 23 . 124;1, 15];
»d=condest(a)
d =
4 . 8071
» d1=condest(a1)
d1 =
4 . 8072
» r1=rcond(a)
r1 =
0 . 2435
» r2=rcond(a1)
r2 =
0 . 2434
Se poate, observa ca sistemul este bine conditionat, rezistent la "perturbatii", iar numerele de conditionare reflecta acest lucru, prin valorile apropiate, pana la cifra zecimala de ordinul patru . Rezolvand sistemul de ecuatii, in cele doua variante, se obtin vectorii x1, respectiv x2:
» b=[2 . 34;3 . 45];
» x1=ab
x1 =
-0 . 0685
0 . 2346
» x2=a1b
x2 =
-0 . 0685
0 . 2346
Dupa rezolvarea sistemelor de ecuatii (initial si perturbat), s-a obtinut, practic, aceeasi solutie .
Factorizarea reprezinta operatia de trecere de la o multime la multimea claselor de echivalenta, in raport cu o relatie de echivalenta data . Factorizarea se aplica, la rezolvarea sistemelor de ecuatii liniare . In esenta, factorizarea este o procedura de transformare a unei matrici, in general patratice, intr-o matrice superior triunghiulara (elementele superioare diagonalei principale sunt diferite de zero, in timp ce, elementele inferioare acesteia sunt toate egale cu zero) sau una inferior triunghiulara (elementele inferioare diagonalei principale sunt diferite de zero, in timp ce, elementele superioare acesteia sunt toate egale cu zero) . Metodele directe pentru rezolvarea sistemelor (de forma Ax=B), cele mai utilizate, sunt metodele bazate pe procesul de eliminare sau descompunerea matricei coeficientilor (matricea A) . Astfel, pentru un sistem Ax=B:
, in care , este matricea coeficientilor; , este vectorul necunoscutelor; este vectorul termenilor liberi, ai sistemului, metoda generala de transformare intr-un sistem echivalent, "Metoda de eliminare a lui Gauss", se prezinta in continuare . Prima transformare aplicata sistemului Ax=B, are ca efect eliminarea necunoscutei x1 din celelalte n-1 ecuatii, adunand prima ecuatie la urmatoarele n-1,
inmultita cu , obtinandu-se un nou sistem de ecuatii: . In a doua transformare, se foloseste a doua ecuatie, din sistemul , inmultita cu , pentru eliminarea necunoscutei x2 din ultimele n-2 ecuatii ale acestui sistem, obtinandu-se un nou sistem: . Se observa ca inainte de eliminarea necunoscutei xk, sistemul echivalent, obtinut dupa eliminarea necunoscutelor x1, x2, . , xk-1, poate fi scris sub forma:
, k=1, 2, . , n
a carui descriere analitica este:
, , iar elementele matricei sunt:
, respectiv, elementele vectorului , se calculeaza cu relatiile:
Pentru k=n, sistemul nou obtinut este:
Se cunoaste ca o matrice poate fi scrisa sub forma uni produs L·U de doua matrice, unde matricea L este inferior triunghiulara si U superior triunghiulara, daca . Descompunerea este unica daca elementele matricei L sau U, de pe diagonala principala sunt specificate astfel:
Daca se relizeaza produsul dintre cele doua matrici L si U si se face identificarea termenilor, se obtin n2 ecuatii neliniare cu n2 necunoscute . Se observa ca :
iar, daca se determina elementele primei coloane de sub diagonala principala, se obtin ecuatiile:
Forma generala a ecuatiilor din care rezulta elementele liniei k, din matricea U, este:
Elementele coloanei k a matricei L (inferioare diagonalei principale), sunt date de ecuatiile:
MATLAB foloseste trei metode de baza, pentru factorizarea matricilor:
Factorizarea Cholesky-pentru matrici simetrice, pozitiv definite
Factorizarea Lower Upper (LU)-eliminarea Gauss, pentru matrici patratice
Factorizarea ortogonala (QR)- pentru matrici rectangulare
Toate aceste metode de factorizare se apeleaza, in MATLAB, utilizand functiile specifice: chol(), lu(), qr() . Caracteristica, valabila in toate metodele, o constituie utilizarea matricei triunghiulare ale carei elemente, situate deasupra sau sub diagonala principala, sunt toate egale cu zero . Toate sistemele de ecuatii liniare, care permit utilizarea matricilor triunghiulare (factorizari), se rezolva usor folosind pre- sau post-substitutia .
Factorizarea Cholesky este o metoda utilizata pentru rezolvarea unui sistem de ecuatii liniare de forma: Sx=b unde S este o matrice pozitiv definita (o matrice este pozitiv definita daca elementele diagonalei principale sunt toate pozitive, iar celelalte elemente componente ale matricei nu sunt "prea mari") . Reprezentarea schematica, a factorizarii Cholesky, este prezentata in figura alaturata, cu ajutorul blocurilor de calcul DSP (Digital Signal Processing), proiectate, special pentru procesarea semnalelor digitale, pentru a fi folosite in mediile de simulare dinamica in Simulink (MATLAB 6)
Prin factorizare Cholesky, o matrice S, simetrica si pozitiv definita, se exprima ca produsul dintre o matrice superior triunghiulara, L (elementele superioare diagonalei principale, sunt diferite cu zero), si transpusa acesteia, L':
S=L'*L
Factorizarea Cholesky se realizeaza cu functia MATLAB chol(), care se apeleaza cu una din sintaxele :
L=chol(S)
[L, p]=chol(S)
Pentru exemplificare, se va folosi ca matrice "de intrare", matricea pascal de ordinul 7:
» S=pascal(7)
S =
1 1 1 1 1 1 1
1 2 3 4 5 6 7
1 3 6 10 15 21 28
1 4 10 20 35 56 84
1 5 15 35 70 126 210
1 6 21 56 126 252 462
1 7 28 84 210 462 924
» L=chol(S)
L =
1 1 1 1 1 1 1
0 1 2 3 4 5 6
0 0 1 3 6 10 15
0 0 0 1 4 10 20
0 0 0 0 1 5 15
0 0 0 0 0 1 6
0 0 0 0 0 0 1
Conditiile pentru factorizarea Cholesky sunt:
i . Matricea S sa fie pozitiv definita
ii . S= (Lt )* (L) si det(S)>0 (at este notatia pentru matricea transpusa matricei A);
iii . Exista o matrice unica L, superior triunghiulara, nesingulara, care satisface relatia:S=Lt*L
Un sistem de ecuatii lineare S·X=B devine:
Rt·r·x=b
iar solutia acestuia presupune rezolvarea succesiva a sistemelor:
rty=b si rx=y .
Intrucat, operatorul MATLAB "impartire la stanga" (backslash) recunoaste ca operanzi matricile triunghiulare, rezolvarea sistemelor de ecuatii lineare se poate realiza folosind:
»X=R(R'B)
Fie sistemul de ecuatii:
Solutiile acestui sistem, folosind factorizarea Cholesky, se gasesc prin urmatoarea secventa:
» A=[9, -1, 2;-1, 8, -5;2, -5, 7]; B=[1;-2;-1];
»L=chol(A);
»X=L(L'B)
X =
0 . 1846
-0 . 6308
-0 . 6462
In Matlab 6 este posibila rezolvarea sistemelor simetrice, prin metoda Cholesky, folosind Solver-ul Cholesky din pachetul de programe DSP Blockset Simulink . De exemplu, pentru rezolvarea sistemeului de ecuatii liniare dat prin: , se foloseste urmatorul "model" de rezolvare (solver):
Ex . : Se cere factorul Cholesky al matricei:
Cu secventa MATLAB:
»A=[9, 1, -1, 0;1, 9, 0, -1;-1, 0, 9, -1;0, -1, 1, 9];
» [r, p]=chol(a)
p=0 (matrice pozitiv definita)
Solutie data in Matlab 6 folosind pachetul de programe DSP Blockset din Simulink:
Tema:Sa se rezolve sistemul:prin factorizare Choleski .
Solutia sistemului, data in Matlab 6, folosind pachetul de programe DSP Blockset din Simulink:
Solverul Cholesky va realiza, in acest caz o rezolvare a sistemului de ecuatii, dar actvarea "simularii" va avea ca rezultat afisarea in linia de comanda a MATLAB, a mesajului "Warning: Input matrix to block 'Model de rezolvare/Solverul Cholesky /Cholesky Factorization' is not positive definite . " . Acest mesaj avertizeaza utilizatorul asupra faptului ca matricea de intrare, din fisierul "model" Model de rezolvare, nu este pozitiv definita . In acest caz solutia data prin Solverul Cholesky este eronata, intrucat matricea coeficientilor nu este pozitiv definita . Totusi, radacinile verifica prima ecuatie, cu eroare la a patra zecimala .
Rezolvarea sistemului prin determinarea matricei inverse (matricea coeficientilor fiind nesingulara, iar rangul matricei extinse este egal cu rangul matricei coeficientilor, asadar sistemul admite solutie unica), are ca rezultat vectorul solutie: X=[ -5; 2; 6; -4;] . Aceasta solutie verifica toate ecuatiile sistemului .
Nota:-Daca se incearca determinarea factorului Cholesky, prin functia MATLAB chol([1, 2, 1, 1;2, 1, 3, 3;1, 1, 1, 1;2, 7, 2, 3]), va fi afisat un mesaj de eroare:
(??? Error using ==> chol
Matrix must be positive definite . )
intrucat matricea de la argumentul functiei chol() are elemente cu "mult diferite" .
Factorizarea lower-upper (lu)
Prin factorizarea lower-upper lu , o matrice patratica este descompusa sub forma produsului a doua matrici triunghiulare: una inferior triunghiulara (lower), permutata (o matrice permutata, dupa o anumita regula este o matrice in care liniile sunt pivotate intre ele), cu elementele, de pe diagonala principala, egale cu unitatea (matricea l) si cealalta, o matrice superior triunghiulara (upper), (matricea u) . In MATLAB, factorizarea lu este utilizata pentru obtinerea inversei unei matrici cu functia inv() (inversa unei matrici A, se calculeaza ca produsul dintre inversa matricei inferior triunghiulara L, calculata prin eliminare Gauss, si inversa matricei superior triunghiulara U, calculata prin aceeasi metoda), respectiv pentru calculul determinantului matricelor cu functia det() (ca produs dintre determinanul matricei inferior triunghiulara L si determinanul matricei superior triunghiulara U) . Este, totodata, baza rezolvarii ecuatiilor liniare prin 'impartirea matricelor' obtinuta cu operatorii " " si " / " .
Permutarea liniilor sau coloanelor unei matrici se poate exemplifica foarte sugestiv printr-o schema cu blocuri DSP . Presupunem ca se doreste permutarea liniilor unei matrici dupa urmatorul index: P=[2, 1, 3, 3, 2, 2, ], respectiv permutarea coloanelor, dupa urmatoarea regula:Q=[2, 1, 3, 2, 2] . Atunci, schema bloc este urmatoarea:
Factorizarea lower-upper se realizeaza dupa urmatoarea schema generalizata:
Factorizarea unei matrici, prin metoda lower-upper, se realizeaza cu functia lu() si se apeleaza cu una dintre sintaxele:
[LU]=lu(S) - cu un singur parametru de iesire, matricea [LU]
[l, u]=lu(S) - returneaza o matrice superior triunghiulara, u, si o matrice inferior triunghiulara permutata, l, astfel incat S=l*u
[l, u, p]=lu(x) - returneaza o matrice superior triunghiulara in u, inferior triunghiulara in l si permutarea matriceala in p, astfel incat l*p=p*S
Ex . :
Sa se factorizeze, prin metoda lower-upper, matricea
Cu secventa MATLAB
»A=[1, 2, 3;4, 5, 6;7, 8, 0];
»[LU]=lu(A)
LU =
7 . 0000 8 . 0000 0
0 . 1429 0 . 8571 3 . 0000
0 . 5714 0 . 5000 4 . 5000
»[l, u]=lu(A)
unde, matricea L, este o permutare a matricei inferior triunghiulare, iar u este o matrice superior triunghiulara .
» [L, U, P]=lu(A)
L =
1 . 0000 0 0
0 . 1429 1 . 0000 0
0 . 5714 0 . 5000 1 . 0000
U =
7 . 0000 8 . 0000 0
0 0 . 8571 3 . 0000
0 0 4 . 5000
P =
0 0 1
1 0 0
0 1 0
In Matlab, versiunile superioare versiunii 5 . 3, este posibila factorizarea matricilor patratice prin metoda lower-upper folosind pachetul de programe DSP Blockset din Simulink . De exemplu, pentru matricea , folosind pachetul DSP Blockset se obtine matricea compusa din matricea L, inferior triunghiulara, si matricea superior triunghiulara:
Matricea Ap, (linia 2 pivotata, astfel incat aceasta devine linia 1 ) este , iar matricile triunghiulare L (nepivotata) si U
sunt:, respectiv
Pentru a observa modul in care sunt determinate matricile L si U, se va apela functia MATLAB lu(A) in toate cele trei variante posibile:
» A=[1, -2, 3;4, 0, 6;2, -1, 3];
» [LU]=lu(A)
LU =
4 . 0000 0 6 . 0000
0 . 2500 -2 . 0000 1 . 5000
0 . 5000 0 . 5000 -0 . 7500
» [L, U]=lu(A)
L =
0 . 2500 1 . 0000 0
1 . 0000 0 0
0 . 5000 0 . 5000 1 . 0000
U =
4 . 0000 0 6 . 0000
0 -2 . 0000 1 . 5000
0 0 -0 . 7500
» [L, U, P]=lu(A)
L =
1 . 0000 0 0
0 . 2500 1 . 0000 0
0 . 5000 0 . 5000 1 . 0000
U =
4 . 0000 0 6 . 0000
0 -2 . 0000 1 . 5000
0 0 -0 . 7500
P =
0 1 0
1 0 0
0 0 1
Rezolvarea sistemelor de ecuatii ax=b prin factorizarea lower upper presupune urmatoarele etape:
i . determinarea matricelor L si U cu functia MATLAB »[L, U]=LU(A);
ii . determinarea vectorilor »Y=lb si »x=uy
Etapa ii . , poate fi realizata si compact cu instrutiunea » x=u (lb)
De exemplu, pentru sistemul de 3 ecuatii si 3 necunoscute , se foloseste urmatoarea secventa MATLAB:
»A=[1, -2, 3;4, 0, 6;2, -1, 3];B=[1;-2;-1];
»[L, U]=lu(A);X=U(LB)
obtinandu-se solutia sistemului :
X =
-2
0
1
Daca factorizarea se realizeaza prin apelarea cu trei parametri de iesire, atunci se obtin radacinile permutate ale sistemului dat :
»[L, U, P]=lu(C); X=U(LB)
X =
-0 . 5000
1 . 5000
0 . 5000
In Matlab 6 este posibila rezolvarea sistemelor liniare cu n ecuatii si n necunoscute prin metoda lower-upper folosind pachetul de programe DSP Blockset din Simulink . De exemplu, pentru rezolvarea sistemului 3x3 , se foloseste urmatorul model Simulink :
Prin factorizare q-r, o matrice se exprima ca produsul dintre o matrice ortogonala, q, si o matrice superior triunghiulara, r .
Matricea ortogonala sau matricea cu coloane ortonormale, este acea matrice reala care are toate coloanele de lungime unitara, si sunt perpendiculare . Daca o matrice Q este ortogonala, atunci :
Q'*Q=1
Daca matricea este complexa, atunci termenul corespunzator este matrice unitara . Matricea ortogonala si matricea unitara sunt usor de utilizat, in plus, nu introduc si nu amplifica erorile de calcul . Din acest motiv, aceste matrici sunt utilizate in calcule specifice analizei numerice .
Factorizarea q-r, se realizeaza dupa urmatoarea schema generalizata :
In linia de comanda, factorizarea q-r se apeleaza in urmatoarele variante :
[Q, R] = qr(A) (matrice complet definita, sau matricea dispersiilor)
[Q, R] = qr(A, 0) ( matrice complet definita, sau matricea dispersiilor)
[Q, R, E] = qr(A) (matrice complet definita)
[Q, R, E] = qr(A, 0) (matrice complet definita)
X = qr(A) (matrice complet definita)
R = qr(A) (matricea dispersiilor)
[C, R] = qr(A, B) (matricea dispersiilor)
R = qr(A, 0) (matricea dispersiilor)
[C, R] = qr(A, B, 0) (matricea dispersiilor)
In Matlab 6 este posibila factorizarea matricelor patratice prin metoda q-r folosind pachetul de programe DSP Blockset din Simulink . De exemplu, pentru matricea , folosind pachetul DSP Blockset se obtine:
Ex . :
Sa se determine descompunerea q-r a matricei
Cu secventa MATLAB
»A=[1, 2, 3;4, 5, 6;7, 8, 0];
» [q, r]=qr(a)
Q =
-0 . 1231 0 . 9045 0 . 4082
-0 . 4924 0 . 3015 -0 . 8165
-0 . 8616 -0 . 3015 0 . 4082
R =
-8 . 1240 -9 . 6011 -3 . 3235
0 0 . 9045 4 . 5227
0 0 -3 . 6742
In Matlab, versiunile superioare versiunii 5 . 3, este posibila factorizarea matricilor patratice prin metoda q-r folosind pachetul de programe DSP Blockset din Simulink . De exemplu, pentru matricea , folosind pachetul DSP Blockset, din Simulink, se obtine:
Factorizarea 'Q-R' se utilizeaza pentru rezolvarea sistemelor de ecuatii liniare cu mai multe ecuatii decat necunoscute (sisteme supra-determinate) . Cea mai buna solutie a unor astfel de sisteme, in sensul celor mai mici patrate, este calculata cu instructiunea: x=ab, care utilizeaza aceasta factorizare .
Prin utilizarea factorizarii QR, solutia x este calculata in doua etape:
Y=(q-1)*b
x=ry
Aceeasi solutie se obtine folosind urmatoarea secventa MATLAB, scrisa compact:
»[Q, R]=qr(A); X=R(inv(Q)*B)
De exemplu, solutia sistemului liniar , se obtine, folosind urmatoarea secventa:
» A=[1, -2;1, 2;3, -1;2, 1]; B=[-2;3;7;11]; [Q, R]=qr(A);
» X=R(inv(Q)*B)
X =
3 . 0470
1 . 7047
Folosind pachetul DSP Blockset, din Simulink, se obtine:
Folosind o secventa MATLAB, similara, solutia sistemului se obtine prin factorizare QR:
» A=[1, -2, 1, -1;2, -1, 3, -3;1, 1, 1, -1;2, 7, 2, 8]; B=[1;6;7;0];
[Q, R]=qr(A);
» X=R(inv(Q)*B)
X =
7 . 0000
2 . 0000
-4 . 4000
-2 . 4000
Vectorul X contine radacinile sistemului: X=, x=7; y=2; z=-4, 4; t=-2, 4 .
Folosind pachetul DSP Blockset, din Simulink, se obtine:
In general, in aplicatiile ingineresti exista un interes deosebit pentru determinarea valorilor proprii reale si complexe ale unei matrici reale . Analiza metodelor de calcul ale valorilor proprii pentru matricele reale poate fi extinsa la matricele cu elemente complexe . Asemanator rezolvarii sistemelor de ecuatii, si in cazul determinarii valorilor si vectorilor proprii exista doua tipuri de metode: metode directe si metode indirecte . Folosirea metodelor directe sau indirecte depinde mai mult de natura solutiei cerute decat de forma matricei .
Exista aplicatii in care se pot cere n valori proprii si n vectori proprii ai unei matrici de ordinul n si alte aplicatii in care se cere doar un numar k<n de valori si vectori proprii, precum si aplicatii la care se cere valoarea proprie maxima (minima) in valoare absoluta . In cazul in care se cere o valoare proprie, sau un numar redus de valori proprii k<n, se pot aplica metodele indirecte (iterative), iar in cazul in care se cer toate, sau aproape toate valorile propii, este preferabil sa se foloseasca metodele directe care implica transformarile similare ce reduc matricea initiala A la o matrice similara B de o forma particulara (reducandu-se astfel algoritmul de calcul propriu-zis) .
Problema valorilor si vectorilor proprii apare intr-o mare varietate de aplicatii si se scrie sub forma Ax lx sau, in general, Ax lBx vibratiile corpurilor elastice, difuzia masica, sisteme oscilatorii .
In studiul sistemelor fizice este, adesea, necesara rezolvarea unor sisteme de ecuatii liniare avand forma algebrica generala :
unde A este o matrice simetrica reala, x este vectorul variabilelor independente iar un parametru scalar denumit valoare caracteristica sau valoare proprie . Problema rezolvarii sistemului consta in determinarea parametrului si a vectorului x corespunzator, vector cunoscut sub denumirea de vector caracteristic sau vector propriu .
In determinarea solutiilor nebanale ale sistemului de ecuatii :Ax=lx, unde :
a - este matrice patratica de ordinul n,
x - este vector coloana de ordinul n,
l - este un scalar,
valorile x, respectiv l, care satisfac ecuatia de mai sus se numesc vectori proprii, respectiv valori proprii .
Pentru a evidentia semnificatia fizica a valorilor si vectorilor proprii se considera urmatoarele exemple .
A .
Presupunand necesar studiul vibratiilor libere ale unui sistem constand din trei corpuri solide de masa, 2m, 4m, 6m, respectiv, fixate pe o bara elastica, la distanta egala, l, unul de altul, respectiv de reazemele de incastrare ale barei, acesta conduce la scrierea ecuatiilor miscarii si la formularea unei probleme de valori proprii:
unde ω reprezinta frecventa, x vectorul deplasare si k=s/l (s- tensiunea in bara, 4l- lungimea barei) . Daca se realizeaza substitutia , sistemul de ecuatii ale miscarii, devine:
B .
Un sistem fizic format din doua corpuri solide de mase m1, respectiv m2, legate intre ele prin trei arcuri elastice elicoidale, avand coeficientii de elasticitate , este descris matematic prin sistemul de ecuatii diferentiale ordinare:
unde sunt deplasarile pe orizontala fata de starea de echilibru, iar t este timpul .
Pentru oscilatiile naturale sistemul va oscila la o frecventa unica , obtinandu-se oscilatii sinusoidale de amplitudine y si unghi de defazaj . In acest caz expresiile celor doua deplasari sunt:
Daca se inlocuiesc aceste expresii ale deplasarilor, in sistemul ecuatiilor de miscare, dupa ordonare, rezulta sistemul
Pentru si frecventa adimensionala , sistemul devine:
Sistemul omogen, in necunoscutele , are solutia banala , pentru orice valoare λ, fapt neinteresant din punct de vedere fizic . Astfel se impune conditia ca det (A fiind matricea sistemului), rezultand ecuatia polinomiala in :
Gradul polinomului caracteristic reprezinta numarul gradelor de libertate ale sistemului fizic, precum si numarul valorilor proprii . Fiecarei valori proprii ii corespunde cel putin un vector propriu, in cazul de fata existand doi vectori proprii:
Din punct de vedere fizic, si reprezinta frecvente naturale in forma adimensionala pentru sistemul considerat:
Daca se rezolva sistemul omogen in si pentru si in pentru , rezulta vectorii proprii si :
Se observa ca este frecventa cea mai joasa iar este frecventa cea mai inalta pentru sistemul considerat, respectiv, faptul ca la frecventa cele doua corpuri se deplaseaza la fel si in aceeasi directie, iar la frecventa cele doua mase se deplaseaza cu aceeasi marime dar in sensuri opuse . Cele doua exemple prezentate au menirea sa evidentieze faptul ca valorile proprii si vectorii proprii descriu modul de comportare al unui sistem fizic, reprezentand o serie de marimi ce descriu comportarea sistemului .
Valorile si vectorii proprii ai unei matrici patratice se calculeaza, in Matlab, cu functia eig() si se apeleaza cu una din sitaxele:
v=eig(a)
v=eig(a, b)
[v, d]=eig(a)
[v, d]=eig(a, b)
[v, d]=eig(a, 'nobalance')
Prin apelarea functiei MATLAB eig(), in aceste variante, se obtin urmatoarele rezultate
v=eig(a) returneaza un vector care contine valorile proprii ale matricei a
[v, d]=eig(a) returneaza o matrice v ale carei coloane sunt vectorii proprii corespunzatori valorilor proprii si, o matrice diagonala d care contine valorile proprii ale matricei a astfel incat:
a*v=v*d
[v, d]=eig(a, 'nobalance') returneaza valorile si vectorii proprii fara a executa in prealabil o echilibrare (aproximare) . Daca matricea contine elemente mici, comparabile cu erorile de rotunjire, balansarea se scaleaza, facandu-le la fel de semnificative ca celelalte elemente ale matricei originale . Acest lucru conduce in final la vectori proprii incorecti . In astfel de situatii se utilizeaza notiunea de 'nobalance' .
Daca matricea are valori proprii de ordinul intai (valorile proprii l sunt distincte), atunci vectorii proprii sunt independenti . Daca vectorii proprii nu sunt independenti, atunci matricea originala nu este neregulata . Chiar daca o matrice este neregulata, solutia functiei eig() satisface ecuatia:
A*x=x*d
Valorile si vectorii proprii generalizati determina solutiile nebanale ale ecuatiei:
Ax=lbx
unde a si b sunt matrici patratice de ordinul n, iar l este un scalar . Valorile lui l care satisfac ecuatia se numesc valori proprii generalizate si valorile X corespunzatoare sunt vectorii proprii generalizati . Daca b este o matrice nesingulara (det(b) , adica matricea este inversabila), problema calculului valorilor si vectorilor proprii se reduce la o problema standard cu valori proprii prin inlocuirea lui a cu b-1a, intrucat ecuatia este echivalenta cu:
B-1ax=lx
Calculul vectorilor si valorilor proprii generalizate se realizeaza cu functia MATLAB eig() si se apeleaza cu una dintre sintaxele:
» v=eig(a, b)
returneaza un vector care contine valorile proprii generalizate, daca a si b sunt matrici patratice ;
» [v, d]=eig(a, b)
returneaza o matrice v ale carei coloane sunt vectorii proprii corespunzatori si, o matrice diagonala d ce contine valorile proprii generalizate, astfel incat: A*v=b*v*d
Ex . :
Sa se determine valorile si vectorii proprii ai matricei
Cu secventa MATLAB :
» A=[-2 1 0; 1 -2 1; 0 1 -2]
» [v, d]=eig(a)
Se obtin rezultatele
Aplicand functia MATLAB eig(), sistemelor de ecuatii ale miscarii, pentru cele doua sisteme fizice, tratate teoretic, la inceputul acestui paragraf, se obtin urmatoarele rezultate :
A . - pentru primul sistem:
A=[2, -1, 0;-1, 2, -1;0, -1, 2]
[V, D]=eig(A)
V =
0 . 5000 -0 . 7071 -0 . 5000
0 . 7071 0 . 0000 0 . 7071
0 . 5000 0 . 7071 -0 . 5000
D =
0 . 5858 0 0
0 2 . 0000 0
0 0 3 . 4142
V=eig(A)
V =
B . -pentru cel de-al doilea sistem :
A=[2, -1;-1, 2];
[V, D]=eig(A)
V =
D =
V=eig(A)
V =
O valoare singulara corespunzatoare unei matrici rectangulare este valoarea scalarului , iar vectorii singulari corespunzatori aceleiasi matrici sunt vectorii u si v care respecta relatia de interdependenta :, (aici, notatia VT reprezinta transpusa matricei V)
Calculul acestor valori este un mijloc sigur de determinare a rangului unei matrici de forma generala .
Daca, valorile singulare , sunt folosite pentru a forma o matrice diagonala , iar cu elementele vectorilor singulari, corespunzatori, se formeaza matricile ortogonale U si V, se poate scrie :
Daca U si V sunt ortogonale (UT * U =1, VT * V=1), atunci acestea reprezinta rezultatul descompunerii in valori singulare a matricei A :
Descompunerea completa, in valori singulare, a unei matrici de tipul Amxn, are ca rezultat o matrice Umxm, una , respectiv o matrice Vnxn (adica matricile U si V sunt patratice, in timp ce are ordinul matricei A) . Daca matricea A are numarul de linii mai mare decat numarul de coloane, atunci descompunerea in valori singulare va avea ca rezultat o matrice U de dimensiuni mari, dar ultimele »m-n » coloane sunt inmultite cu zero, in matricea . In aceasta situatie, economia in marimea descompunerii, are efecte in timpul de calcul si in spatiul de memorie necesar stocarii rezultatelor, prin renuntarea la calculul acelor elemente care, oricum sunt eliminate prin inmultirea cu zero, si eliminarea acelor coloane din reprezentarea matricei U . In acest mod, va fi determinata si afisata o matrice U cu dimensiunea mxn, o matrice , de ordinul nxn respectiv, matricea V, de aceeasi dimensiune . Daca matricea A este patratica, simetrica si pozitiv definita, atunci descompunerea in valori si vectori proprii este identica descompunerii in valori singulare . De remarcat ca rezultatele descompunerii in valori singulare a unei matrici reale sunt intotdeauna reale, in timp ce, descompunerea in valori si vectori proprii, a unei matrici reale, poate fi complexa .
Descompunerea in valori singulare a matricei A, se poate face, in MATLAB, folosind functia specifica svd() . Functia svd() se apeleaza cu una din sintaxele:
D=svd(A) - returneaza un vector care contine valorile singulare
[u, s, v]=svd(A) - returneaza o matrice diagonala s cu aceleasi dimensiuni ca A, avand elementele diagonale nenegative (care sunt si valori singulare) in ordine descrescatoare si matricele u si v care satisfac relatia: X=u*s*v
[u, s, v]=svd(x, 0) - efectueaza un calcul mai rapid al valorilor singulare,
Ex . :
Sa se descompuna, in valori singulare, matricea
Rezolvare : Cu secventa MATLAB
» A=[1 5; 4 3];
» D=svd(a)
D =
6 . 6713
2 . 5482
» [u, s, v]=svd(a)
U =
-0 . 7163 -0 . 6977
-0 . 6977 0 . 7163
S =
6 . 6713 0
0 2 . 5482
V =
-0 . 5257 0 . 8507
-0 . 8507 -0 . 5257
Ex . :Sa se descompuna in valori singulare, matricea , folosind toate variantele de apelare a functiei MATLAB svd() .
Rezolvarea este imediata, cu urmatoarele secvente:
» A=[1, 7;5, 3;8, 1;4, 9];
» D=svd(A)
D =
» [U, S, V]=svd(A)
U =
S =
V =
» [U, S, V]=svd(A, 0)
U =
S =
V =
APLICATII
Fie: a=; b=; c=2 .
Sa se calculeze:a+b; a-b;a+c .
Fie: m=; n=
Sa se calculeze: M=m+n
Fie: a=;b=; c=2 .
Sa se calculeze produsele : ab; ba; ac; bc .
Fie: a= b=
Sa se calculeze:a/b; b/a .
Fie: a=; c=
Sa se calculeze catul : d=a/b .
Fie: a=; b=
Sa se calculeze:ab; ba .
Fie: a= b=3;c= - 3
Sa se calculeze:a^b; b^a; a^c
: Calculati determinantii urmatoarelor matrici:
.
Calculati inversa matricei: A =
Sa se determine rangul matricei A =
Sa se descompuna, prin factorizare Choleski, Lower-Upper, respectiv, QR, matricile:
Sa se rezolve, folosind metodele de factorizare Choleski, Lower-Upper, respectiv, QR, urmatoarele sisteme de ecuatii lineare:
;
Sa se rezolve, folosind metodele de factorizare Choleski, Lower-Upper, respectiv, QR, urmatoarele sisteme de ecuatii lineare:
Sa se gaseasca valorile si vectorii proprii ai matricelor
Acest document nu se poate descarca
E posibil sa te intereseze alte documente despre: |
Copyright © 2024 - Toate drepturile rezervate QReferat.com | Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site. { Home } { Contact } { Termeni si conditii } |
Documente similare:
|
ComentariiCaracterizari
|
Cauta document |