You are on page 1of 15

Proiect Metode Numerice :

Rezolvarea Sistemelor de Ecuaii Lineare Ax = b


Student : Dascalu Laurentiu , !" #A

$ % 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

You might also like