You are on page 1of 9

8

SISTEME DE ECUA TII ALGEBRICE LINIARE


8.1 Introducere
Rezolvarea sistemelor de ecuatii liniare joac a un rol central n analiza numeric a.
Metode directe algoritmi niti, erori de rotunjire Gauss, Crout, Choleski,
Metode iterative procese innite, erori de trunchiere Jacobi, Gauss-Seidel.
8.2 Metoda de eliminare a lui Gauss
Ideea de baz a aducerea sistemului prin transform ari elementare la o form a echivalent a,
cu matrice superior triunghiular a.
Transformarea sistemului faza elimin arii.
Rezolvarea sistemului cu matrice triunghiular a faza substitutiei inverse.
Exemplicare:
_
_
_
a
11
x
1
+ a
12
x
2
+ a
13
x
3
= b
1
a
21
x
1
+ a
22
x
2
+ a
23
x
3
= b
2
a
31
x
1
+ a
32
x
2
+ a
33
x
3
= b
3
,
sau
_
_
a
11
a
12
a
13
a
21
a
22
a
23
a
31
a
32
a
33
_
_
_
_
x
1
x
2
x
3
_
_
=
_
_
b
1
b
2
b
3
_
_
Faza elimin arii:
Pasul 1: Elimin am x
1
din toate ecuatiile sistemului, cu exceptia primei ecuatii.
mp artim prima linie la elementul pivot a
11
.
Sc adem prima ecuatie nmultit a cu primul coecient din celelalte ecuatii:
_

_
x
1
+ a
(1)
12
x
2
+ a
(1)
13
x
3
= b
(1)
1
a
(1)
22
x
2
+ a
(1)
23
x
3
= b
(1)
2
a
(1)
32
x
2
+ a
(1)
33
x
3
= b
(1)
3
,
sau
_

_
1 a
(1)
12
a
(1)
13
0 a
(1)
22
a
(1)
23
0 a
(1)
32
a
(1)
33
_

_
_

_
x
1
x
2
x
3
_

_
=
_

_
b
(1)
1
b
(1)
2
b
(1)
3
_

_
.
cu
_

_
a
(1)
1j
= a
1j
/a
11
, j = 1, 2, 3
b
(1)
1
= b
1
/a
11
a
(1)
ij
= a
ij
a
i1
a
(1)
1j
, j = 1, 2, 3, i = 2, 3
b
(1)
i
= b
i
a
i1
b
(1)
1
.
Pasul 2: Elimin am x
2
din ultima ecuatie.
mp artim a doua ecuatie la elementul pivot a
(1)
22
si o sc adem nmultit a cu a
(1)
32
din ecuatia
a treia:
_

_
1 a
(1)
12
a
(1)
13
0 1 a
(2)
23
0 0 a
(2)
33
_

_
_

_
x
1
x
2
x
3
_

_
=
_

_
b
(1)
1
b
(2)
2
b
(2)
3
_

_
,
cu
_

_
a
(2)
2j
= a
(1)
2j
/a
(1)
22
, j = 2, 3
b
(2)
2
= b
(1)
2
/a
(1)
22
a
(2)
ij
= a
(1)
ij
a
(1)
i2
a
(2)
2j
, j = 2, 3, i = 3
b
(2)
i
= b
(1)
i
a
(1)
i2
b
(2)
2
.
Pasul 3: mp artim cea de a treia ecuatie la elementul pivot a
(2)
33
:
_
_
1 a
(1)
12
a
(1)
13
0 1 a
(2)
23
0 0 1
_
_
_

_
x
1
x
2
x
3
_

_
=
_

_
b
(1)
1
b
(2)
2
b
(3)
3
_

_
,
cu
b
(3)
3
= b
(2)
3
/a
(2)
33
.
Faza substitutiei inverse:
_

_
x
3
= b
(3)
3
x
2
= b
(2)
2
a
(2)
23
x
3
x
1
= b
(1)
1
(a
(1)
12
x
2
+ a
(1)
13
x
3
).
Calculul determinantului:
Datorit a mp artirii succesive cu elementele pivot:
detA
(3)
=
detA
a
11
a
(1)
22
a
(2)
33
= 1,
rezult a:
detA = a
11
a
(1)
22
a
(2)
33
.
2
Generalizare sistem de n ecuatii cu n necunoscute A = [a
ij
]
nn
, b = [b
i
]
n
si
x = [x
i
]
n
:
A x = b.
Faza elimin arii:
naintea pasului k (k = 1, 2, . . . n 1):
_

_
1 a
(1)
12
a
(1)
1k
a
(1)
1k+1
a
(1)
1n
0 1 a
(2)
2k
a
(2)
2k+1
a
(2)
2n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 a
(k1)
kk
a
(k1)
kk+1
a
(k1)
kn
0 0 a
(k1)
k+1k
a
(k1)
k+1k+1
a
(k1)
k+1n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 a
(k1)
nk
a
(k1)
nk+1
a
(k1)
nn
_

_
_

_
x
1
x
2
.
.
.
x
k
x
k+1
.
.
.
x
n
_

_
=
_

_
b
(1)
1
b
(2)
2
.
.
.
b
(k1)
k
b
(k1)
k+1
.
.
.
b
(k1)
n
_

_
.
La pasul k se elimin a x
k
din ecuatiile de sub ecuatia k:
_

_
1 a
(1)
12
a
(1)
1k
a
(1)
1k+1
a
(1)
1n
0 1 a
(2)
2k
a
(2)
2k+1
a
(2)
2n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 1 a
(k)
kk+1
a
(k)
kn
0 0 0 a
(k)
k+1k+1
a
(k)
k+1n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 0 a
(k)
nk+1
a
(k)
nn
_

_
_

_
x
1
x
2
.
.
.
x
k
x
k+1
.
.
.
x
n
_

_
=
_

_
b
(1)
1
b
(2)
2
.
.
.
b
(k)
k
b
(k)
k+1
.
.
.
b
(k)
n
_

_
.
Noile elemente ale liniei pivot k:
_

_
a
(k)
kk
= 1
a
(k)
kj
= a
(k1)
kj
/a
(k1)
kk
, j = k + 1, . . . , n
b
(k)
k
= b
(k1)
k
/a
(k1)
kk
.
Noile elemente ale liniilor de sub linia pivot:
_

_
a
(k)
ik
= 0
a
(k)
ij
= a
(k1)
ij
a
(k1)
ik
a
(k)
kj
, j = k + 1, . . . , n, i = k + 1, . . . , n
b
(k)
i
= b
(k1)
i
a
(k1)
ik
b
(k)
k
.
La pasul k se modic a doar elementele delimitate de linia si coloana k.
Nu trebuie considerat j = k, deoarece pe coloana pivot k se genereaz a numai 1 sau 0.
3
La pasul k = n se mparte ultima ecuatie la ultimul pivot, a
(n1)
nn
:
_

_
1 a
(1)
12
a
(1)
1k
a
(1)
1k+1
a
(1)
1n
0 1 a
(2)
2k
a
(2)
2k+1
a
(2)
2n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 1 a
(k)
kk+1
a
(k)
kn
0 0 0 1 a
(k+1)
k+1n
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0 0 0 0 1
_

_
_

_
x
1
x
2
.
.
.
x
k
x
k+1
.
.
.
x
n
_

_
=
_

_
b
(1)
1
b
(2)
2
.
.
.
b
(k)
k
b
(k+1)
k+1
.
.
.
b
(n)
n
_

_
,
sau
A
(n)
x = b
(n)
.
Faza substitutiei inverse:
_

_
x
n
= b
(n)
n
x
k
= b
(k)
k

n
X
i=k+1
a
(k)
ki
x
i
, k = n 1, . . . , 1.
Calculul determinantului:
Datorit a mp artirii succesive cu elementele pivot:
detA
(n)
=
detA
a
11
a
(1)
22
a
(n1)
nn
= 1
rezult a:
detA = a
11
a
(1)
22
a
(n1)
nn
.
Generalizare ecuatie matricial a B = [b
ij
]
nm
si X = [x
ij
]
nm
:
A X = B
Faza elimin arii (k = 1, . . . , n):
_

_
a
(k)
kj
= a
(k1)
kj
/a
(k1)
kk
, j = k + 1, . . . , n
b
(k)
kj
= b
(k1)
kj
/a
(k1)
kk
, j = 1, . . . , m
a
(k)
ij
= a
(k1)
ij
a
(k1)
ik
a
(k)
kj
, j = k + 1, . . . , n, i = k + 1, . . . , n,
b
(k)
ij
= b
(k1)
ij
a
(k1)
ik
b
(k)
kj
, j = 1, . . . , m.
Faza substitutiei inverse:
_

_
x
nj
= b
(n)
nj
, j = 1, . . . , m
x
kj
= b
(k)
kj

n
X
i=k+1
a
(k)
ki
x
ij
, j = 1, . . . , m, k = n 1, . . . , 1.
Inversarea matricilor ca matrice a termenilor liberi se ia matricea unitate:
B = E
n
[
ij
]
nn
X = A
1
.
4
Pivotarea rearanjarea liniilor pt. a avea la ecare pas al elimin arii un pivot maxim.
Se minimizeaz a erorile de rotunjire si se evit a mp artirile cu 0
pivotarea par tial a pe coloane la pasul k se caut a elementul maxim a
(k1)
lk
pe
coloana k si liniile l k si se interschimb a liniile l si k.
metoda elementului principal se caut a elementul pivot pe toate liniile si coloanele
matricii A
(k1)
pe care nu s-a pivotat.
/*=========================================================================*/
int Gauss(float **a, float **b, int n, int m, float *det)
/*---------------------------------------------------------------------------
Rezolva ecuatia matriciala a x = b prin metoda Gauss, inlocuind la iesire b
cu x (utilizeaza pivotarea partiala pe coloane).
a - matricea (n x n) a sistemului
b - matricea (n x m) a termenilor liberi; solutia x la iesire
*det - determinantul matricii sistemului (iesire)
Returneaza indicele de eroare: 0 - executie normala
1 - matrice a singulara
---------------------------------------------------------------------------*/
{
#define Swap(a,b) { t = a; a = b; b = t; }
float amax, sum, t;
int i, imax, j, k;
/* ELIMINARE */
*det = 1.0;
for (k=1; k<=n; k++) {
amax = 0.0; /* determina linia pivot avand */
for (i=k; i<=n; i++) /* elementul maxim pe coloana k */
if (amax < fabs(a[i][k])) {amax = fabs(a[i][k]); imax = i;}
if (amax == 0.0)
{printf("Gauss: matrice singulara !\n"); return 1;}
/* interschimba liniile imax si k */
if (imax != k) { /* pt. a pune pivotul pe diagonala */
*det = -(*det);
for (j=k; j<=n; j++) Swap(a[imax][j],a[k][j])
for (j=1; j<=m; j++) Swap(b[imax][j],b[k][j])
}
*det *= a[k][k]; /* inmulteste determinantul cu pivotul */
t = 1.0/a[k][k]; /* imparte linia pivot */
for (j=k+1; j<=n; j++) a[k][j] *= t;
for (j= 1; j<=m; j++) b[k][j] *= t;
for (i=k+1; i<=n; i++) { /* reduce liniile nepivot */
t = a[i][k];
for (j=k+1; j<=n; j++) a[i][j] -= a[k][j]*t;
for (j= 1; j<=m; j++) b[i][j] -= b[k][j]*t;
}
}
/* SUBSTITUTIE INVERSA */
for (k=n-1; k>=1; k--)
for (j=1; j<=m; j++) {
sum = b[k][j];
for (i=k+1; i<=n; i++) sum -= a[k][i]*b[i][j];
b[k][j] = sum;
}
return 0;
}
5
8.7 Sisteme de ecuatii liniare cu matrice tridiagonal a
Matrici tridiagonale matrici rare cu majoritatea elementelor extradiagonale 0.
Metodele generale nu sunt eciente.
n mod tipic prin discretizarea ecuatiilor diferentiale prin scheme cu diferente nite.
Fie sistemul:
A x = d,
sau
_

_
b
1
c
1
a
2
b
2
c
2
0
.
.
.
.
.
.
.
.
.
a
i1
b
i1
c
i1
a
i
b
i
c
i
.
.
.
.
.
.
.
.
.
0 a
n1
b
n1
c
n1
a
n
b
n
_

_
_

_
x
1
x
2
.
.
.
x
i1
x
i
.
.
.
x
n1
x
n
_

_
=
_

_
d
1
d
2
.
.
.
d
i1
d
i
.
.
.
d
n1
d
n
_

_
.
Se factorizeaz a A:
A = L U,
cu
L U =
_

2

2
0
.
.
.
.
.
.

i1

i1

i

i
.
.
.
.
.
.
0
n1

n1

n

n
_

_
1
1
1
2
0
.
.
.
.
.
.
1
i1
1
i
.
.
.
.
.
.
0 1
n1
1
_

_
Prin identicare:
_
_
_
b
1
=
1
, c
1
=
1

1
a
i
=
i
, b
i
=
i

i1
+
i
, c
i
=
i

i
, i = 2, 3, . . . , n 1
a
n
=
n
, b
n
=
n

n1
+
n
.
Elementele matricilor L si U (presupunnd
i
6= 0):

i
= a
i
, i = 2, 3, . . . , n,
_
_
_

1
= b
1
,
1
= c
1
/
1

i
= b
i
a
i

i1
,
i
= c
i
/
i
, i = 2, 3, . . . , n 1

n
= b
n
a
n

n1
.
Diagonala matricii L estei identic a cu diagonala matricii A.
6
Sistemul initial devine :
L (U x) = d

L y = d
U x = y.
sau
_

1
a
2

2
0
.
.
.
.
.
.
a
i1

i1
a
i

i
.
.
.
.
.
.
0 a
n1

n1
a
n

n
_

_
_

_
y
1
y
2
.
.
.
y
i1
y
i
.
.
.
y
n1
y
n
_

_
=
_

_
d
1
d
2
.
.
.
d
i1
d
i
.
.
.
d
n1
d
n
_

_
si
_

_
1
1
1
2
0
.
.
.
.
.
.
1
i1
1
i
.
.
.
.
.
.
0 1
n1
1
_

_
_

_
x
1
x
2
.
.
.
x
i1
x
i
.
.
.
x
n1
x
n
_

_
=
_

_
y
1
y
2
.
.
.
y
i1
y
i
.
.
.
y
n1
y
n
_

_
.
Prin identicarea elementelor:

y
1
= d
1
/
1
y
i
= (d
i
a
i
y
i1
)/
i
, i = 2, 3, . . . , n

x
n
= y
n
x
i
= y
i

i
x
i+1
, i = n 1, . . . , 1.
Faza factoriz arii:
_
_
_

1
= b
1
,
1
= c
1
/
1
, y
1
= d
1
/
1

i
= b
i
a
i

i1
,
i
= c
i
/
i
, y
i
= (d
i
a
i
y
i1
)/
i
i = 2, 3, . . . , n 1.
Faza substitutiei inverse:

x
n
= (d
n
a
n
y
n1
)/(b
n
a
n

n1
)
x
i
= y
i

i
x
i+1
, i = n 1, . . . , 1.
n implementare sunt suciente patru tablouri a, b, c si d, asociate cu a
i
, b
i
, c
i
si d
i
.
Elementele
i
pot stocate n tabloul c, peste m arimile c
i
.
Pentru d
i
, y
i
si x se poate utiliza acelasi tablou, d, care n nal contine solutia sistemului.
7
/*=========================================================================*/
void TriDiag(float a[], float b[], float c[], float d[], int n)
/*---------------------------------------------------------------------------
Rezolva un sistem liniar cu matrice tridiagonala prin factorizare
a[] - codiagonala inferioara (i=2..n)
b[] - diagonala principala
c[] - codiagonala superioara (i=1..n-1)
d[] - vectorul termenilor liberi; la iesire contine solutia x
n - ordinul sistemului
---------------------------------------------------------------------------*/
{
float beta;
int i; /* factorizare */
c[1] /= b[1]; d[1] /= b[1];
for (i=2; i<=(n-1); i++) {
beta = b[i] - a[i]*c[i-1];
c[i] /= beta;
d[i] = (d[i] - a[i]*d[i-1])/beta;
}
d[n] = (d[n] - a[n]*d[n-1])/(b[n] - a[n]*c[n-1]);
/* substitutie inversa */
for (i=(n-1); i>=1; i--) d[i] -= c[i]*d[i+1];
}
Nu se efectueaz a pivotare dominan ta diagonal a a matricii sistemului asigur a succesul.
8
Bibliography
[1] Gh. Dodescu, Metode numerice n algebr a, Editura tehnic a, Bucuresti, 1979).
[2] B.P. Demidovich si I.A. Maron, Computational Mathematics (MIR Publishers,
Moskow, 1981).
[3] R.L. Burden si J.D. Faires, Numerical Analysis, Third Edition (Prindle, Weber &
Schmidt, Boston, 1985).
[4] W.H. Press, S.A. Teukolsky, W.T. Vetterling si B.P. Flannery, Numerical Recipes in
C: The Art of Scientic Computing, Second Edition (Cambridge University Press,
Cambridge, 1992).

You might also like