Documente Academic
Documente Profesional
Documente Cultură
Soluţionarea sistemelor de
ecuaţii algebrice
unde:
2
1 1
A
2 1
1
2
B
0 1
1
lsolve ( A B)
1
0 0.5 1 1.5 2
1
0.5
0.5
1
0 0.5 1 1.5 2
1.5
0.5
0
0 0.5 1 1.5 2
a 11 ... a 1n b 1
A : ........... b : . .
a n1 . . . a nn b n
Sistemul de ecuaţii este compatibil determinat dacă determinantul
matricii A este diferit de 0 (matricea este nesingulară).
Soluţia sistemului poate fi scrisă sub forma:
x = A-1 b
Sisteme de ecuaţii algebrice liniare
Soluţia sistemului de ecuaţii poate fi obţinută, de asemenea, cu
funcţia predefinită a MathCAD-ului lsolve:
x:= lsolve(A,b)
Sistemul de ecuaţii liniare mai poate fi rezolvat utilizând blocurile
de instrucţiuni given/find sau given/minerr, pornind de la
nişte aproximaţii iniţiale ale rădăcinilor.
În MatLAB funcţia de calcul a matricei inverse este inv şi atunci:
x = inv(A)*b
Există 2 clase de metode de rezolvare a sistemelor algebrice liniare:
- metode directe sau exacte, care furnizează soluţia într-un număr
finit de paşi, în ipoteza că toate calculele se fac exact (Cramer,
eliminarea gaussiană, Cholesky) şi
- metode iterative, care aproximează soluţia generând un şir care
converge către aceasta (Jacobi, Gauss-Seidel, SOR).
Johann Carl Friedrich Gauss
(1777-1855)
A fost unul dintre cei mai mari matematicieni ai secolului al
nouăsprezecelea şi probabil ai tuturor timpurilor. A trăit
aproape toată viaţa în Gottingen, unde a fost directorul
observatorului astronomic 40 de ani. În timpul studenţiei la
Gottingen, Gauss a descoperit că poligonul cu 17 laturi
poate fi construit cu rigla şi compasul, rezolvând astfel o
problemă deschisă a antichităţii.
A avut contribuţii fundamentale în teoria numerelor, geometrie
diferenţială şi neeuclidiană, funcţii eliptice şi
hipergeometrice, mecanică cerească şi geodezie şi diverse
ramuri ale fizicii, în special magnetism şi optică.
Lucrările lui Gauss în domeniul cuadraturilor numerice continuă
munca predecesorilor săi Newton şi Cotes.
Metoda Gauss
Metoda constă în eliminarea succesivă a necunoscutelor într-o
manieră care conduce la un număr de operaţii mult mai redus
decât procedeul care ar utiliza regula lui Cramer şi calculul
determinanţilor corespunzători.
Metoda eliminării a lui Gauss are două etape:
- transformarea sistemului dat într-unul echivalent, triunghiular;
- rezolvarea sistemului triunghiular prin substituţie inversă.
Prima etapă se mai numeşte mersul direct al metodei Gauss şi
constă în excluderea consecutivă a necunoscutelor, începând
cu x1, din ecuaţiile sistemului: x1 a 1n 1 a 12 x 2 ... a 1n x n / a 11
Elementul ai,i plasat pe diagonala principală se numeşte pivot.
Start
n, a
i =1, n-1
c = ai,i xn=an,,n+1/an,n
k = n -1
j = i, n+1
j = k+1, n
k = i+1, n
s =s + ak,jxj
D = ak,i
xk=ak,n+1-s
L = i, n+1
k = k -1
ak,L = ak,L-ai,,L*D
dа
k>0
nu
x
Algoritmul Metodei Gauss
Stop
Metoda Gauss
8 5 2 0
1
Exemplu: 10 2 2 13
A b
5
ORIGIN 1 n length ( b ) 4
2 2 8 2 12
0 8
2 2 5
MTG( a n ) for i 1 n 1 b
n n 1
ca SOL( b ) x
i i n b
n n
for j i n 1 kn1
a while k 0
i j
a
i j c s 0
for k i 1 n for j k 1 n
Da s s b x
k i k j j
for h i n 1 x b s
k k n 1
a a a D
k h k h i h kk1
a x
8 5 2 0 1 1 0.625 0.25 0 0.125 T
SOL( MTG( Cn) ) ( 1.543 2.379 0.726 2.261 )
10 2 2 13 0.109 0.291 1.8
C augment ( A b ) MTG( Cn )
5 0 1
2 2 8 2 12 0 0 1 0.299 1.402 8 1.543 5 ( 2.379) ( 2) 0.726 0 2.261 1.003
5 1.543 10 ( 2.379) ( 2) 0.726 2 2.261 13.005
0
2 2 5 8 0 0 0 3.755 8.49
Metoda Gauss
În fereastra de comenzi a MATLAB-ului, înainte
function metgauss (A,n), de apelul la funcţie, se determină A şi n, după
for i =1:n-1, cum urmează:
c = A[i,i];
for j = i:n+1
A[i,j] = A[i,j]/c;
end
[8 5 2 0 1;
for k = i+1:n, 5 10 2 2 13;
d = A[k,i]; A
for l = i:n+1; 2 2 8 2 12;
A[k,l] = A[k,l] - A[i,l]*d;
end 0 2 2 5 8 ];
end
x[n] = A[n,n+1]/A[n,n];
k = n-1;
while k > 0, n=4
s = 0; Apoi se efectuează apelul metgauss (A,n)
for j = k+1:n, şi se va obţine:
s = s + A[k,j]*x[j]; Rădcinile sistemului -1.543 -2.379 0.726 2.261
end
x[k] = A[k,n+1] - s;
k = k - 1;
end
rez = [Rădcinile sistemului -,num2str(x)];
disp (rez)
Metoda Gauss-Seidel
Principiul general al metodelor iterative poate fi prezentat analogic cu
metoda iteraţiilor, în care ecuaţia originală este transcrisă ca:
ce conduce la procedeul iterativ
Astfel, alegând aproximaţiile iniţiale ale rădăcinilor:
x 1( 0 ) , x (20 ) ... x (n0 )
şi substituindu-le în partea dreaptă a ecuaţiilor:
x 1 a 1,n 1 a 1,1 x 1 a 1, 2 x 2 ... a 1,n x n / a 1,1 x 1
x 2 a 2 ,n 1 a 2 ,1 x 1 a 2, 2 x 2 ... a 2,n x n / a 2, 2 x 2
...
x a
n n , n 1 a n ,1 x 1 a n , 2 x 2 ... a n , n x n / a n , n x n
..... .....
x (ni 1) n ( x 1( i ) , x (2i ) ... x (ni ) ) x ( i 1) ( x ( i 1) , x ( i 1) ... x ( i 1) , x ( i ) )
n n 1 2 n n
metoda iteraţiilor simple metoda Seidel
Relaţia iteraţională de calcul a rădăcinilor sistemului de ecuaţii
liniare prin metoda Seidel poate fi scrisă în felul următor:
k 1 n
a k ,n 1 a kj x ( i 1)
j a kj x (ji )
j1 j k
x (ki 1) x (ki )
a kk
Procesul se va întrerupe când se va satisface condiţia: x (ki 1) x (ki )
Start
A,x,n,
L=0
nu
L=0
dа
x
L=1
k = 1, n Stop
S = ak,n+1
j = 1, n
S = S - ak,jxj
S =S/ak,,k
xk = xk+ S
dа
|S| >
L=0 nu
Algoritmul Metodei
Gauss-Seidel
Metoda Gauss-Seidel
Exemplu: 8 5 2 0
1
10 2 2 13 eps 0.001
A b
5
ORIGIN 1
2 2 8 2 12 n length ( b ) 4
0 8
2 2 5
SDEL( a xn eps ) L 0
while L 0
L 1
8 5 2 0 1 1 for k 1 n
10 2 2 13
D augment ( A b ) x
5 2
sa
k n 1
2 2 8 2 12 1
0 1 for j 1 n
2 2 5 8
ssa x
k j j
T s
SDEL( D xn eps ) ( 1.543 2.378 0.726 2.261 ) s
a
8 1.543 5 ( 2.378) 2 0.726 0 0.998 k k
x x s
k k
T L 0 if s eps
lsolve( A b) ( 1.543 2.379 0.726 2.261)
x
Metoda Gauss
În fereastra de comenzi a MATLAB-ului, înainte
de apelul la funcţie se determină A,x,n şi eps,
după cum urmează:
function seidel (A,x,n,eps),
L = 0;
while L = = 0; [8 5 2 0 1;
L =1;
5 10 2 2 13;
for k =1:n,
A
s = A(k,n+1);
for j =1:n,
2 2 8 2 12;
s = s – A(k,j)*x(j); 0 2 2 5 8 ];
end
s = s/A(k,k);
x(k) = x(k) + s;
x = [1 2 1 1];
if abs(s) > eps,
L = 0; n = 4;
end
end eps = 0.001;
rez =[Radacinile sistemului -,num2str(x)];
disp (rez)
Apoi se efectuează apelul seidel (A,x,n,eps)
şi se va obţine:
Rădcinile sistemului -1.543 -2.379 0.726 2.261
Sisteme de ecuaţii algebrice neliniare