Sunteți pe pagina 1din 6

Rezolvarea sistemelor de ecuatii liniare(1).

Rezolvarea sistemelor de ecuatii neliniare.


Se poate spune că rezolvarea sistemelor de ecuaţii liniare joacă un rol central în cadrul
metodelor numerice.
În aplicaţiile din ingineria electrică aceasta problema apare adeseori, un exemplu foarte
comun fiind acela în care se urmareste rezolvarea unor probleme de circuit spre a determina
valorile unor curenti, tensiuni, etc. Valorile coeficienţilor şi a termenilor liberi pot fi afectate de
erori (determinări experimentale, calcule "aproximative“, ipoteze simplificatoare, etc.). Măsura
în care acestea influenţează soluţiile sistemelor de ecuaţii liniare determină sisteme omogene si
neomogene.
În unele situatii, sistemele de ecuaţii algebrice liniare apar în mod natural, din însăşi
formularea problemei. În alte cazuri, însă, sistemele de ecuaţii liniare rezultă ca urmare a
aplicării unor metode numerice pentru rezolvarea unor alte probleme mai complexe.
Există doua categorii de metode pentru rezolvarea sistemelor de ecuaţii liniare, anume,
metode directe sau “exacte” si metode indirecte sau “iterative”.
În cazul metodelor directe, soluţia sistemului rezultă printr-o serie de transformari(operatii),
care se aplica sistemului initial cu scopul de a aduce sistemul la o forma care este relativ mai
simpla. Numărul total de operaţii aritmetice elementare va fi finit, si acestea depind în mod
direct de dimensiunea sistemului, fiind cunoscut de la început. Rezultatul furnizat de metodele
directe este afectat doar de erorile de rotunjire şi acest avantaj face ca ele să fie preferate ori de
câte ori dimensiunea şi particularităţile sistemului păstrează numărul de operaţii în limite
acceptabile. Exemple de metode directe sunt: metoda inversării matriciale, metoda lui Cramer
bazată pe calculul determinanţilor, metoda de eliminare a lui Gauss, etc.
În cazul metodelor indirecte, soluţia se obţine printr-o serie de aproximaţii succesive, la
fiecare iteratie obținându-se aproximaţii din ce în ce mai bune ale soluţiei până la atingerea unei
precizii fixate apriori (precizie dorită). Aceste metode permit obţinerea soluţiei numerice a unui
sistem de ecuaţii prin generarea unui şir de valori care tinde la soluţia exactă. Practic se poate
efectua numai un număr finit de iteraţii, erorile de rotunjire fiind însoţite în cazul metodelor
iterative şi de erori de trunchiere. Avantajul metodelor iterative este simplitatea şi eficienţa
implementării lor în programe, atunci cand respectivul sistem nu este rezolvabil printr-o metoda
directa. Exemple de metode iterative sunt: metoda lui Jacobi, metoda Gauss-Seidel, metoda
relaxării.
În continuare am ales în prezentarea noastra cate o metoda din fiecare categorie, metoda de
eliminare a lui Gauss si metoda Jacobi.
1. Metoda de eliminare a lui Gauss.
Vom considera un sistem de n ecuatii cu n necunoscute. Alegem sa scriem sistemul în
urmatoarea forma:
𝑎11 𝑥1 + 𝑎12 𝑥2 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1
𝑎21 𝑥1 + 𝑎22 𝑥2 + ⋯ + 𝑎2𝑛 𝑥𝑛 = 𝑏2
. (1)
.
{𝑎𝑛1 𝑥1 + 𝑎𝑛2 𝑥2 + ⋯ + 𝑎𝑛𝑛 𝑥𝑛 = 𝑏𝑛
Prezentam algoritmul în forma sa simplificata si prin observatiile din final vom puncta
si un aspect particular care este bine sa fie avut în vedere. Asadar vom face asupra acestui sistem
n-1 transformari, care vor aduce sistemul în forma triunghiulara superior. Apoi rezolvarea va fi
imediata, prin determinarea solutiilor în sens invers, de la n catre 1.
Pas 1. Facem 0 pe coloana 1, sub a11, adica a21, a31, ..., an1 vor deveni 0. Se pastreaza
𝑎 𝑎 𝑎
linia 1 neschimbata si se inmulteste succesiv cu − 𝑎21 , − 𝑎31 , … , − 𝑎𝑛1 , iar apoi se aduna cu
11 11 11
liniile 2, 3, ..., n. Obtinem astfel:
𝑎21 𝑎31 𝑎𝑛1
𝑎11 𝑥1 + 𝑎12 𝑥2 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1 |− ,− ,…,−
𝑎11 𝑎11 𝑎11
0 + 𝑎22 (1) 𝑥2 + ⋯ + 𝑎2𝑛 (1) 𝑥𝑛 = 𝑏2 (1)
.
.
{ 0 + 𝑎𝑛2 (1) 𝑥2 + ⋯ + 𝑎𝑛𝑛 (1) 𝑥𝑛 = 𝑏𝑛 (1)

Pas 2. Facem 0 pe coloana 2, sub a22, adica a23, a24, ..., a2n vor deveni 0. Se pastreaza
𝑎 𝑎 𝑎
linia 2 neschimbata si se inmulteste succesiv cu − 𝑎32 , − 𝑎42 , … , − 𝑎𝑛2 , iar apoi se aduna cu
22 22 22
liniile 3, ..., n. Obtinem astfel:
𝑎11 𝑥1 + 𝑎12 𝑥2 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1
(1) 𝑎32 𝑎42 𝑎𝑛2
0 + 𝑎22 (1) 𝑥2 + ⋯ + 𝑎2𝑛 (1) 𝑥𝑛 = 𝑏2 |− ,− ,…,−
𝑎22 𝑎22 𝑎22
.
.
(2)
{ 0 + 0 + ⋯ + 𝑎𝑛𝑛 (2) = 𝑏𝑛
Pas n-1. Facem 0 pe coloana n-1, sub a(n-1)(n-1), adica ann-1 va deveni 0.
𝑎11 𝑥1 + 𝑎12 𝑥2 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1
0 + 𝑎22 (1) 𝑥2 + ⋯ + 𝑎2𝑛 (1) 𝑥𝑛 = 𝑏2 (1)
.
.
{ 0 + 0 + ⋯ + 𝑎𝑛𝑛 (𝑛−1) 𝑥𝑛 = 𝑏𝑛 (𝑛−1)

Acum sistemul a fost adus la forma superior triunghiulara.


Solutia sistemului se va determina prin substitutie inversa, altfel spus, de jos în sus:
𝑏 𝑏𝑖 −∑𝑖𝑗=𝑛 𝑎𝑖𝑗 ∙𝑥𝑗
𝑥𝑛 = 𝑎 𝑛 , 𝑥𝑖 = , 𝑢𝑛𝑑𝑒 𝑖 = 𝑛 − 1 … 1 (2)
𝑛𝑛 𝑎𝑖𝑖
În aceste relatii valorile coef aij si bi sunt valorile obținute în urma transformarii
sistemului si nu sunt valorile initiale.
Observatii:
1. Aceasta metoda poate rezolva orice sistem liniar, compatibil si determinat.
2. Fiind o metoda directa singurele erori ce sunt introduse în calcule sunt erorile de
rotunjire.
3. Dupa ce sistemul a fost adus la forma triunghiulara superior prin înmultirea
elementelor de pe diagonala principala se obtine valoarea determinantului, altfel
spus, 𝑑𝑒𝑡 = 𝑎11 𝑎22 … 𝑎𝑛𝑛 .
4. Aici a fost prezentata o varianta simpificata a metodei. Pentru o mai buna rigoare se
procedeaza astfel. Înainte de a trece sa facem zerouri pe o anumita coloana, sa
spunem coloana i, se va verifica daca elementul aii este cel mai mare în valoare
absoluta, dintre elementele aii, ai+1i,..., ani. Daca valoarea cea mai mare revine
elementului aki, atunci se va face o schimbare de linii, anume între linia i si linia k.
Prin acest demers se va evita sa avem valori mici la numitor, acele valori aii, care în
anumite cazuri particulare, dar nefericite, ne pot conduce la nedeterminare, prin
împartire la zero.
5. Atunci cand veti face calculele matematic, va rog sa respectati algoritmul până la
capat si nu cautati sa faceti d-voastra alte rezolvari care pe moment vi se pot parea
mai potrivite. De exemplu, când sistemul are 2 ecuatii cu 2 necunoscute, ati putea fi
tentati sa faceti substitutii, dar acest lucru nu este corect dpdv al algoritmului.
Si acum un exemplu practic:
2.5 1 2𝑥 − 3.3𝑦 + 𝑧 = −1.6
2𝑥 − 3.3𝑦 + 𝑧 = −1.6 |− , − 2.5 2.5 2.5
2 2
{ 2.5𝑥 − 0.7𝑦 − 0.8𝑧 = −1.3 <=> 0 + ( 2 ∙ 3.3 − 0.7) 𝑦 + (− 2
∙ 1 − 0.8) 𝑧 = (
2
∙ 1.6 − 1.3)
1 1 1
𝑥 + 𝑦 + 2.2𝑧 = 9.6 { 0 + ( ∙ 3.3 + 1) 𝑦 + (− ∙ 1 + 2.2) 𝑧 = ( ∙ 1.6 + 9.6)
2 2 2

2𝑥 − 3.3𝑦 + 𝑧 = −1.6 2𝑥 − 3.3𝑦 + 𝑧 = −1.6


2.650
<=> {0 + 3.425𝑦 − 2.05𝑧 = 0.7 <=> { 0 + 3.425𝑦 − 2.050𝑧 = 0.7 |−
3.425
0 + 2.650𝑦 + 1.7𝑧 = 10.4 0 + 2.650𝑦 + 1.600𝑧 = 10.4
2𝑥 − 3.3𝑦 + 𝑧 = −1.6
2𝑥 − 3.3𝑦 + 𝑧 = −1.6
0 + 3.42𝑦 − 2.05𝑧 = 0.7
{ <=> {0 + 3.42𝑦 − 2.05𝑧 = 0.7
2.650 2.650
0+0+( ∙ 2.05 + 1.7) 𝑧 = − ∙ 0.7 + 10.4 0 + 0 + 3.286𝑧 = 9.858
3.425 3.425
9.858
𝑧= = 3.000
3.286
0.7 + 2.05 ∙ 3
𝑦= = 2.002
3.42
−1.6 − 3 + 3.3 ∙ 2.002
𝑥= = 1.003
2
Solutia sistemului este (1, 2, 3). Noi am obtinut acele mici erori ptr y si z deoarece am folosit în calcul
doar 3 zecimale.

Metoda lui Newton pentru rezolvarea sistemelor de ecuatii neliniare.


Un sistem de ecuatii neliniare are urmatoarea forma:
𝑓1 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0
𝑓2 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0
{ (3)

𝑓𝑛 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) = 0

În relatia(3) este necesar ca cel putin una din functiile 𝑓𝑖 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ), sa fie neliniare
în raport cu cel putin una din necunoscutele 𝑥𝑖 , unde i=1...n.
Rezolvarea acestui sistem va determina de cele mai multe ori, nu doar o singura solutie
asa cum aveam în cazul unui sistem liniar, ci mai multe solutii. Desigur exista mai multe metode
numerice de determinare a acestor solutii. Noi am ales aici metoda lui Newton, metoda iterativa,
pe care am întalnit-o deja la rezolvarea ecuatiilor algebrice si care acum va fi generalizata pentru
un sistem de ecuatii. Aplicand aceasta metoda, prin parcurgerea ei, vom obtine o singura solutie,
urmand ca mai apoi, prin aplicarea din nou a metodei, avand însa ca punct de start alte valori,
vom obtine rând pe rând si celelalte solutii.
Fiind o metoda aproximativa, vom preciza de la început numarul de zecimale exacte cu
care se va intentiona determinarea solutiei. De exemplu, eps=1e-3, va dermina solutia
sistemului cu 3 zecimale exacte.
Ideea de baza este sa generam simultan n siruri de valori, corespunzator fiecarei solutii
xi, i=1...n, si sa determinam limitele de convergenta a acestor n siruri de valori, situatie în care
am determinat astfel una din solutiile sistemului nostru. Rezolvarea sistemului neliniar va
implica transformarea acestuia prin liniarizare, într-un sistem liniar, dar atentie, necunoscutele
(𝑘)
în acest nou sistem vor fi ∆𝑥𝑖 , unde k reprezinta iteratia la care ne referim si i=1...n.
Sa începem:
(0) (0) (0)
1. Vom alege mai întai o solutie de start, pentru sistemul nostru, (𝑥1 , 𝑥2 , … , 𝑥𝑛 ).
(𝑘)
2. Liniarizam sistemul în necunoscutele ∆𝑥𝑖 , 𝑖 = 1 … 𝑛. Pentru aceasta vom folosi
matricea Jacobiana, astfel:

𝜕𝑓1 𝜕𝑓1 𝜕𝑓1 𝜕𝑓1


… (𝑘)
𝜕𝑥1 𝜕𝑥2 𝜕𝑥3 𝜕𝑥𝑛 ∆𝑥1 −𝑓1 (𝑥1 , 𝑥2 , … , 𝑥𝑛 )
𝜕𝑓2 𝜕𝑓2 𝜕𝑓2 𝜕𝑓2 (𝑘) −𝑓2 (𝑥1 , 𝑥2 , … , 𝑥𝑛 )
… ∗ ∆𝑥2 = [ ] (4)
𝜕𝑥1 𝜕𝑥2 𝜕𝑥 𝜕𝑥𝑛 … …
… 3
𝜕𝑓𝑛 𝜕𝑓𝑛 𝜕𝑓𝑛 𝜕𝑓𝑛 (𝑘)
[∆𝑥𝑛 ] −𝑓𝑛 (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) (𝑥(𝑘−1) ,…,𝑥 (𝑘−1))
1 𝑛

[ 𝜕𝑥1 𝜕𝑥1 𝜕𝑥1 𝜕𝑥1 ](𝑥(𝑘−1),…,𝑥(𝑘−1))
1 𝑛

Deoarece atat matricea Jacobiana cat si matricea termenilor liberi sunt calculate în
(0) (0) (0)
valorile solutiei anterioare(initial în (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) ) sistemul din relatia (4) este liniar si
se poate rezolva cu usurinta, eventual prin una din metodele prezentate deja, metoda de
eliminare a lui Gauss sau metoda iterativa Jacobi.
3. Se verifica daca:
(𝑘)
|∆𝑥𝑖 | ≤ 𝑒𝑝𝑠, ∀𝑖 = 1 … 𝑛
(𝑘) (𝑘−1) (𝑘)
a) În caz afirmativ, 𝑥𝑖 = 𝑥𝑖 + ∆𝑥𝑖 , 𝑖 = 1 … 𝑛, si aceasta este solutia
sistemului neliniar, deci algoritmul se încheie aici.
(𝑘) (𝑘−1) (𝑘)
b) În caz negativ, se calculeaza 𝑥𝑖 = 𝑥𝑖 + ∆𝑥𝑖 , 𝑖 = 1 … 𝑛, si cu aceste
noi valori se reia algoritmul de la pasul 2.
Observatii:
1. Pentru a nu ramane în ciclu infinit se stabileste de la început un Nmax de pasi din care
se va urmari determinarea solutiei sistemului neliniar. Dc acest Nmax este depasit se
considera ca sirurile noastre de valori sunt divergente si semnalam acest lucru printr-un
mesaj de eroare.
2. Alegerea solutiei de start influenteaza numarul de pasi necesari a fi realizati pentru
gasirea iterativa a solutiei sistemului nelinar.
3. Alegerea solutiei de start este de dorit sa fie facuta în apropierea unei solutii a sistemului.
Pentru aceasta, de exemplu, la un sistem cu 2 necunoscute se poate face o reprezentare
grafica a ecuatiilor si punctul de intersectie dintre cele 2 curbe poate fi determinat destul
de bine, dar aproximativ totusi, de pe grafic. În plus, este absolut necesar ca
determinantul matricii Jacobiene sa fie nenul în solutia de start aleasa.
Si acum un exemplu practic:
Fie sistemul:
𝑥2 + 𝑦2 = 5
{ 𝑥2 𝑦2
+ =1
4 9
Acest sistem are 4 solutii ce reprezinta cele 4 puncte de intersectie dintre prima curba(un
cerc) si a doua curba(o elipsa):
A (-1.7888, 1.3416), B (1.7888, 1.3416), C (1.7888, -1.3416), D (-1.7888, -1.3416)
Vezi figura de mai jos:

Vom face 2 iteratii ale metodei de rezolvare prezentate si vom alege ca si solutie de
start: (1.6, 1.2), în apropierea punctului B de pe grafic.
𝑥2 𝑦2
𝑓1 (𝑥, 𝑦 ) = 𝑥 2 + 𝑦 2 − 5 ; 𝑓2 (𝑥, 𝑦 ) = 4
+ 9
−1;

𝜕𝑓1 𝜕𝑓1 𝜕𝑓2 𝑥 𝜕𝑓2 2𝑦


𝜕𝑥
= 2𝑥; 𝜕𝑦
= 2𝑦; 𝜕𝑥
= 2; 𝜕𝑦
= 9
;

−𝑓1 (𝑥, 𝑦) = 5 − 𝑥 2 − 𝑦 2
𝑥2 𝑦2
−𝑓2 (𝑥, 𝑦) = 1 − −
4 9
Iteratia 1:
2 ∙ 1.6 2 ∙ 1.2 ∆𝑥 5 − 1.62 − 1.22
[ 1.6 2∙1.2
]∙[ ]=[ ]
1.62 1.22
2 9
∆𝑦 1− −
4 9

3.2 2.4 ∆𝑥 1 0.8


3.2∆𝑥 + 2.4∆𝑦 = 1 |(− 3.2)
[ ] ∙ [ ] = [ ] de unde obtinem: {
0.8 0.266 ∆𝑦 0.2 0.8 ∆𝑥 + 0.266 ∆𝑦 = 0.2
3.2∆𝑥 + 2.4∆𝑦 = 1 3.2∆𝑥 + 2.4∆𝑦 = 1 ∆𝑥 = 0.200
{ 2.4 1 <=> { <=> {
0 + (0.266 − 4 ) ∆𝑦 = 0.2 − 4 0.334 ∆𝑦 = 0.05 ∆𝑦 = 0.149

Deoarece |∆𝑥| > 1𝑒 − 3, dar si |∆𝑦| > 1𝑒 − 3, algoritmul este necesar sa continue.
𝑥 (1) = 𝑥 (0) + ∆𝑥 , deci 𝑥 (1) = 1.6 + 0.200 = 1.800
𝑦 (1) = 𝑦 (0) + ∆𝑦 , deci 𝑦 (1) = 1.2 + 0.149 = 1.349
Iteratia a 2 a:
2 ∙ 1.8 2 ∙ 1.349 ∆𝑥 5 − 1.82 − 1.3492
[ 2∙1.349
]∙[ ]=[ ]
1.82 1.3492
0.9 9
∆𝑦 1− −
4 9

3.6 2.698 ∆𝑥 −0.059 1


3.6∆𝑥 + 2.698∆𝑦 = −0.059 |(− )
[ ]∙[ ] = [ ] de unde avem: { 4
0.9 0.299 ∆𝑦 −0.012 0.9 ∆𝑥 + 0.299 ∆𝑦 = −0.012

3.6∆𝑥 + 2.698∆𝑦 = −0.059 3.6∆𝑥 + 2.698∆𝑦 = −0.059 ∆𝑥 = −0.011


{ 2.698 0.059 ⇔{ {
0 + (0.299 − ) ∆𝑦 = −0.012 + −0.375 ∆𝑦 = 0.002 ∆𝑦 = 0.007
4 4

Se observa ca valorile absolute a lui ∆𝑥 dar si ∆𝑦 sunt mai mici decat la prima iteratie.
Acesta este un indiciu ca suntem pe drumul bun, spre convergenta.
Totusi deoarece |∆𝑥| > 1𝑒 − 3, dar si |∆𝑦| > 1𝑒 − 3, algoritmul este necesar sa
continue.

𝑥 (2) = 𝑥 (1) + ∆𝑥 , deci 𝑥 (2) = 1.800 − 0.011 = 1.788


𝑦 (2) = 𝑦 (1) + ∆𝑦 , deci 𝑦 (2) = 1.349 − 0.007 = 1.342

S-ar putea să vă placă și