$ % Prezentare &enerala : Scopul acestui proiect este ilustrarea unor diverse metode de rezolvare a sistemelor de ecuatii liniare . Forma generala a unui astfel de system este :
Se poate scrie , mai simplu , sub forma matriciala : A*x=b unde : A=!ai"# $%= i , " %= n x=!xi# i=$:n b=!bi# i=$:n Sistemul admite solutie unica daca matricea A este inversabila , caz in care solutia se exprima sub forma : x= * b , unde reprezinta inversa matricei A. &omplexitatea inversarii unei matrici este de '! # , unde n reprezinta numarul de linii si de coloane . (in acest motiv se cauta algoritmi de rezolvare a sistemelor de ecuatii liniare cu o complexitate mai mica . Spre exemplu , eliminarea )aussiana , factorizare : &*oles+y , &rout , metode ortogonale : )ives , ,ouse*older etc. -nsa in acest proiect voi trata doar : metoda )auss./ordan , factorizarea &rout , metoda suprarelaxarii , metoda Simplex de programare lineara precum si aplicatii la aceste metode : calculul matricei inverse , legile lui 0irc*off si modelul 1eontief . $# 2etoda )auss./ordan : a 11 *x 1 a 12 *x 2 a 13 *x 3 . . a 1n *x n = b 1 ; a 21 *x 1 a 22 *x 2 a 23 *x 3 . . a 2n *x n = b 2 ; a n1 *x 1 a n2 *x 2 a n3 *x 3 . . a nn *x n = b n ; A 1 A 1 n 3 3ste o metoda de rezolvare a sistemului de ecuatii liniare A*x=b ce presupune ca matricea A sa fie inversabila !detA4=5#. -deea este sa extindem matricea A cu coloana b , formand matricea 2 =6A7b8 , 2 fiind din si prin operatii elementare asupra liniilor si coloanelor sa obtin matricea astfel ca in locul vectorului b voi avea vectorul solutiilor , x. 'peratiile elementare sunt : $# -ntersc*imbarea a doua linii . 9# -nmultirea unei linii cu o constanta nenula . :# -nsumarea algebrica a doua linii !x=x;c*y# unde x,y sunt doua linii oarecare si c este o constanta reala nenula. Algoritmul in 2atlab : function 6A,x8=eliminare<gauss<"ordan!A# =3liminare )auss./ordan cu pivotare partiala , intoarce vectorul =coloana x si matricea A !in cazul de fata este -n insa o voi folosi =pentru calculul inversei# =Folosesc o singura matrice si >end>!in loc de dimensiunea =matricei# deoarece aceasta metoda este aplicabila si in cazul =calcularii inversei unei matrici. s=size!A# n=min!s# for i=$:n
6u,v8=max!abs!A!i:end,i### u=A!v;i.$,:# A!v;i.$,:#=A!i,:# A!i,:#=u =3liminarea : A!i,6$:i.$ i;$:end8#= A!i,6$:i.$ i;$:end8#?A!i,i# A!i,i#=$ R nxn1 I n +=A!i,6i;$:end8# for "=6$:i.$ i;$:n8 A!",6i;$:end8#= A!",6i;$:end8#.A!",i#.*+ end A!6$:i.$ i;$:end8,i#=5 end x=A!$:n,n;$# 3xemple pentru functia eliminare<gauss<"ordan!A#. $# @@A = 6 $ 9 : : .: $ A .9 9 B .$ .$8 @@ 6A,x8=eliminare<gauss<"ordan!A# @@ x x = 9.5555 .$.5555 $.5555 9# @@A=6 $ 9 : : 9 B .$ .$ .: $ A .9 8 @@6A,x8=eliminare<gauss<"ordan!A# @@ x x = 9.5555 .$.5555 $.5555 B# @@ A=6 B C B 5 C $ B D 9 $5 $ A B .: .B $ : 5 .9 .B 8 @@ 6A,x8=eliminare<gauss<"ordan!A# @@ x x = : .$ $ 9
A# Aplicabilitate are si in calcularea polinomului ce trece printr.un numar dat de puncte. A=6E7b8 Fnde b reprezinta valorile date relativ la polinomul ce se vrea aflat iar E=! # @@ A = 6 $ $ $ $ $ $ $ $ 9 B C $G :9 : $ : H 9D C$ 9B: 5 $ B $G GB 9AG $59B $ $ A 9A $9A G9A :$9A B $ G :G 9$G $9HG DDDG 98 @@ 6A,x8=eliminare<gauss<"ordan!A# @@ x x = .:9.5555 G9.G$GD .:C.DH$D $5.:::: .$.95C: 5.5A55 Acestia sunt coeficientii polinomului de grad A ce trece prin cele G puncte date. &omplexitatea algoritmului este ' ! # . 9# &alculul matricei inverse :
-deea consta in aplicarea eliminarii )auss./ordan unei matrice dreptung*iulare 2=6A 7 8 , rezultand 2=6 7 8 din care decupam a doua "umatate. x i j n 2 I n I n A 1 &omplexitatea algoritmului este '! # I in principiu am de rezolvat n sisteme de ecuatii liniare fiecare cu complexitatea ' ! # Algoritmul in 2atlab : function A<invers=calculul<inversei!A# =calculeaza inversa unei matrice date. 6n,n8=size!A# for i=$:n A!i,n;i#=$ end 6A,x8=eliminare<gauss<"ordan!A# A<invers!$:n,$:n#=A!$:n,n;$:9*n# 3xemple pentru functia calculul<inversei!A# : $# @@A = 6 B C B 5 $ B D 9 $ A B .: $ : 5 .98 @@ J=calculul<inversei!A# J = $.595C .$.9A55 $.$GGD .:.5555 .5.BDH9 5.DA55 .5.C::: 9.5555 5.$CDA .5.9A55 5.A555 .$.5555 .5.95C: 5.A555 .5.GGGD $.5555 @@ -=A*J - = $.5555 5 5.5555 5 5 $.5555 5.5555 5 .5.5555 5 $.5555 5 5 5 5 $.5555 n 3 n 2 @@ -=J*A - = $.5555 5.5555 5.5555 5 5 $.5555 5 5 5 5 $.5555 5 5 5 5 $.5555 9# 2atricea ,ilbert este cunoscuta pentru instabilitate !are un numar mare de conditionare# . Acest exemplu calculeaza inversa unei astfel de matrice . @@ A = 6 $ $?9 $?: $?B $?A $?9 $?: $?B $?A $?G $?: $?B $?A $?G $?D $?B $?A $?G $?D $?C $?A $?G $?D $?C $?H8 @@ J=calculul<inversei!A# J = $.5e;55A * 5.5559 .5.55:5 5.5$5A .5.5$B5 5.55G: .5.55:5 5.5BC5 .5.$CH5 5.9GCC .5.$9G5 5.5$5A .5.$CH5 5.DH:C .$.$DG5 5.AGD5 .5.5$B5 5.9GCC .$.$DG5 $.DH95 .5.CC95 5.55G: .5.$9G5 5.AGD5 .5.CC95 5.BB$5 (upa cum se observa , elementele matricei inverse !J# au valori absolute foarte mari . @@ -=A*J - = $.5555 .5.5555 .5.5555 5.5555 .5.5555 5.5555 $.5555 .5.5555 5.5555 5 5.5555 .5.5555 $.5555 5 5.5555 5.5555 .5.5555 5.5555 $.5555 5 5.5555 .5.5555 5.5555 5.5555 $.5555 @@ -=J*A - = $.5555 .5.5555 .5.5555 .5.5555 .5.5555 5.5555 $.5555 5.5555 5.5555 5.5555 .5.5555 .5.5555 $.5555 .5.5555 .5.5555 5.5555 5.5555 5.5555 $.5555 5.5555 .5.5555 .5.5555 .5.5555 .5.5555 $.5555 -n pofida acestui fapt , am calculat inversa matricei ,ilbert de ordinul A. :#Factorizarea &rout : (escompune o matrice data A in doua matrici 1 si F , acestea avand proprietatea ca sunt triung*iulare !1 inferior respectiv , F superior#. Astfel pentru a rezolva un sistem A*x=b , descompunem prin factorizarea &rout matricea A in 1 si F dupa care rezolvam 9 sisteme triung*iulare de ecuatii liniare . A*x=b 1*F*x=b Kotam F*x=y , il rezolvam dupa care rezolvam si sistemul 1*y=b . &omplexitatea algorimului ramane '! # . Algoritmul in 2atlab : function 61,F8 = crout!A# = factorizare directa &rout = -ntrari: A = matricea de factorizat = -esiri: A = matricele factori 6m, n8 = size!A# 1=zeros!n,n# F=zeros!n,n# for + = $ : n 1!+,+#=A!+,+#.1!+,$:+.$#*F!$:+.$,+# for " = + : n F!+,"# = ! A!+,"# . 1!+,$:+.$#*F!$:+.$,"# #? 1!+,+# end for i = +;$ : n 1!i,+# = !A!i,+# . 1!i,$:+.$#*F!$:+.$,+# # ? F!+,+# end end n 2 3xemple folosind functia crout!A# : $# @@ A = 6 9 $ $ : 9 $ 9 9 $ $ $ 9 H $ A : $ $ D $ 9 $ A $ C8 @@ 61,F8=crout!A# @@ 1 1 = 9.5555 5 5 5 5 $.5555 $.A555 5 5 5 $.5555 $.A555 D.5555 5 5 :.5555 .5.A555 5 9.:::: 5 9.5555 5 B.5555 .9.5555 9.5555 @@ F F = $.5555 5.A555 5.A555 $.A555 $.5555 5 $.5555 $.5555 .5.:::: 5 5 5 $.5555 5 5.AD$B 5 5 5 $.5555 .5.CAD$ 5 5 5 5 $.5555 @@ A.1*F ans = 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 3vident exista o infinitate de matrici 1 si F pentru care 1*F=A !A fiind o matrice data# . B#2etoda suprarelaxarii succesive : 'rice matrice A , se poate scrie A = ( I 1 I F , unde ( este o matrice diagonala , 1 triung*iular inferioara si F triung*iular superioara. S'L este o metoda iretativa de aproximare a solutiei sistemului de ecuatii liniare A*x=b : M este parametrul de relaxare ! 5%N%9 # iar se determina astfel : Oaloarea initiala a vectorului P ! # se alege astfel incat sirul sa fie convergent catre solutia ecuatiei A*P=b Algoritmul in 2atlab : function P=S'L!A,b,P,N,max# 6n,n8=size!A# oldP=ones!n,$# for +=$:max for i=$:n P!i#=!$.N#*oldP!i#;N?A!i,i#*!b!i#.A!i,$:i.$#*P!$:i.$#.A!i,i;$:n#*oldP!!i;$#:n## P oldP=P end end 3xemple folosind functia S'L!A,b,P,N,max# : $# @@A = 6 9 $ 5 5 5 5 5 5 5 $ 9 $ 5 5 5 5 5 5 5 $ 9 $ 5 5 5 5 5 5 5 $ 9 $ 5 5 5 5 5 5 5 $ 9 $ 5 5 5 5 5 5 5 $ 9 $ 5 5 5 5 5 5 5 $ 9 $ 5 5 5 5 5 5 5 $ 9 $ 5 5 5 5 5 5 5 $ 98 @@b=6 $ 9 : B A B : 9 $8 @@ E:=S'L!A,b,ones!lengt*!A#,$#,$.A,$5# @@ E: E: = P k1 =M w P k C w M w , C w M w = DwL 1 1wDwU C w =w DwL 1 b P 0 P k 5.BCGA 5.599A $.BDG5 5.5995 9.BC$$ 5.5$B: $.BH5C 5.55GD 5.BHDD @@ A*E:.bQ ans = .5.55BA 5.55DA .5.55:A 5.55$9 .5.55$B 5.555G 5.559D 5.5595 5.5599 Se observa o eroare datorata faptului ca aceasta metoda este iterative si aproximativa . Pentru a reduce eroarea trebuie sa marim numarul de iteratii .
9# @@ E:=S'L!A,b,ones!lengt*!A#,$#,$.A,95# = Am crescut numarul de pasi la 95 @@ E: @@E: = 5.BHHC 5.555: $.BHHD 5.555: 9.BHHD 5.5559 $.BHHH 5.555$ 5.A555 @@ A*E:.bQ ans = $.5e.55B * .5.C9CA 5.GCGG .5.BCC9 5.9CAG .5.$B99 5.5B$C 5.5H:A .5.5C5C 5.$9AB &resterea numarului de iteratii a dus la reducerea considerabila a erorii. A# 2odelul economic 1eontief : 3ste un model matematic pentru economia unei tari sau unei regiuni bazate pe diverse sectoare ale economiei . Fiecare industrie , intr.o economie , cunoaste doua tipuri de cerere : externa !de la o alta industrie# si interna. . nivelul de productie al industriei
. numarul de unitati produse de industria si consumate de industria - # 2odelul 1eontief desc*is : p=A*p;b =@ Algoritmul in 2atlab : function p=1eontief<open!A,b# =intoarce vectorul p , solutie a ecuatie p=A*p;b 6n,n8=size!A# p=calculul<inversei!eye!n#.A#*bQ p i a i , j s i s i s j P= IA 1 b 3xemplu folosind functia 1eontief<open!A,b# : @@ A= 6 5.$ 5.9 5.$ 5.B 5.9 5.9 5.9 5.: 5.A8 @@ b= 6 H9 GH $$A8 @@ p=1eontief<close!A,b# p = 9:A ::A A9A -- # 2odelul 1eontief inc*is : A*p = p (aca x=$ este o valoare proprie a matricii A atunci solutia va fi multiplu de O !vectorul propriu asociat valorii proprii x=$#. Algoritmul in 2atlab : function y=1eontief<closed!A# =&alculez vectorul propriu asociat valorii proprii $ a matricei A =Solutia x este multiplu al acestui vector : x=c*y , c real. 6v,d8=eig!A# 6n,n8=size!d# y=zeros!n,$# for i=$:n if d!i,i#==$ y=v!$:n,i# end end 3xemplu folosind functia 1eontief<closed!A# : @@A= 6 5.9 5.: 5.9 5.A 5.9 5.: 5.: 5.A 5.A8 @@ 1eontief<closed!A# ans = .5.:CGG .5.A9AC .5.DADD Aceasta este solutia fundamentala , solutia generala rezulta din cea fundamentala prin cunatificare. G#1egile lui 0irc*off : Solutiile sistemelor de ecuatii liniare pot fi aplicate in rezolvarea circuitelor electrice avand in componenta componente pasive te tip rezistori. 2atriceal sistemul se scrie : L*-=F , unde L este matricea rezistentelor , - vectorul intensitatilor si F vectorul tensiunilor . Solutia sistemului de ecuatii liniare este -=LRF. 3xemple de circuite rezolvate prin metoda prezentata mai sus : $# Se da o retea avand matricea rezistenelor : A= 6 r$;r9;r Ir: .r: r9;r:;rB;rG 8 b= 6e$ 58 @@ A=6:5 .$5 .$5 D58 @@ b=695 58 @@ x=ARb x = 5.D555 5.$555 @@ A=6:5 .$5 .$5 B58 @@ b=6AA 58 @@ x=ARbQ x = 9.5555 5.A555 9# Fn alt exemplu de retea : A= 6 r$;rB;rD .rB 5 .rB r9;rB;rA;rG .rA 5 .rA r:;rA;rG;rH 8 b= 6 e$ 5 58 @@ A= 6 :5 .$5 5 .$5 A5 .95 5 .95 G5 8 @@ b=6:G 5 58Q @@ x=ARb x = $.:555 5.:555 5.$555 Pot aparea diverse matrici insa principiu este acelasi : x=ARb Jibliografie : $# &ursurile de la materia 2etode Kumerice 9# *ttp:??mat*.fullerton.edu?mat*eNs?n955:?)aussian/ordan2od.*tml :# *ttp:??mat*.fullerton.edu?mat*eNs?n955:?-nverse2atrix2od.*tml B# *ttp:??mat*.fullerton.edu?mat*eNs?n955:?&*oles+y2od.*tml A# *ttp:??mat*.fullerton.edu?mat*eNs?n955:?S'Lmet*od2od.*tml G# *ttp:??mat*.fullerton.edu?mat*eNs?n955:?0irc*off2od.*tml D# *ttp:??mat*.fullerton.edu?mat*eNs?n955:?1eontief2odel2od.*tml