Sunteți pe pagina 1din 32

CURSUL 5.

3.2.METODE ITERATIVE PENTRU


REZOLVAREA SISTEMELOR DE ECUAȚII
LINIARE
3.2.1. Preliminarii
Se consideră sistemul de ecuaţii liniare
Ax = b , A  GL(n ) şi b  R n (2.1)
Metodele directe permit obţinerea soluţiei exacte a sistemului (2.1), x*  R n
( )
, într-un număr finit de paşi, prin efectuarea de m = O n 3 operaţii elementare,
pentru dimensiuni ale sistemului rezonabil de mici ( n  500 ).
Odată cu creşterea dimensiunii sistemului, erorile de rotunjire, ce se comit
în timpul derulării unor astfel de metode, se pot acumula dramatic, ducând la
vicierea rezultatului final.
Pentru minimizarea acestor erori, se poate utiliza tehnica pivotării, ceea ce,
determină însă, o suplimentare a efortului de calcul, care poate fi semnificativă la
dimensiuni mari.
În astfel de situaţii, se face apel la metodele iterative, ce furnizează soluţia
( )
exactă x* , ca limită a unui proces iterativ x (k ) k , asupra definirii căruia se va
reveni ulterior.
Printre avantajele majore ale utilizării metodelor iterative, în detrimentul
celor directe, se numără viteza de convergenţă considerabilă şi simplitatea
programării acestora.
2
Presupunem, în cele ce urmează, că am identificat o matrice G  R n n şi un
vector c  R n a.i. (I n − G)  GL(n) iar sistemul
x = Gx + c (2.2)
să admită ca unică soluţie pe x* .
Scrierea echivalentă (2.2) a sistemului (2.1) sugerează definirea unei metode
iterative de rezolvare a sa, pornind de la o aproximaţie iniţială x (0 )  R n a soluţiei
( )
exacte x* . Se consideră astfel, şirul de vectori din R n , x (k ) k introdus prin
următoarea relaţie de recurenţă:
x (k + 1) = Gx (k ) + c , () k  0 (2.3)
În acest context, G s.n. matrice de iterare, iar c s.n. vector de iterare, ce
corespunde sistemului (2.1).

3
Definiţia 2.1.1.:
Vom spune că metoda iterativă este convergentă dacă
lim x (k ) = x* , () x (o ) (2.4)
k →
( )
( unde x (k ) k este procesul iterativ generat de metodă).

Teorema 2.1.2. (Teorema fundamentală a metodelor iterative liniare):


Fie sistemul de ecuaţii liniare (2.1) şi sistemul asociat acestuia (2.2). Atunci,
următoarele afirmaţii sunt echivalente:
i) Metoda iterativă (2.4) este convergentă.
ii)  (G )  1 .
iii) Există cel puţin o normă matriceală, subordonată unei norme vectoriale
din R n astfel încât G  1 .

iv)  G k este convergentă.
k =0

4
Observaţia 2.1.3.:
1. Dacă G  1 , atunci
(I n  G)  GLn şi (I n  G )−1 
1
(2.8)
1− G
2. Se reduce analiza convergenţei şirului (2.3) la problema algebrică a
demonstrării că  (G )  1 .
( )
3. Verificarea stabilităţii procesului iterativ x (k ) k implică de regulă un volum
prohibitiv de calcule; de aceea, în practică, se preferă verificarea unei condiţii de
tip Cauchy:
() k  N a.i. x (k + 1) − x (k )   x (k ) , () k  k (2.9)
unde  este eroarea prestabilită, în limita unui număr maxim de iteraţii Maxiter.
4. Metoda iterativă definită anterior nu reprezintă altceva decât metoda
aproximaţiilor succesive pentru determinarea unui punct fix al funcţiei:
f : R n → R n , f (x ) = G(x ) + c ((iii)  f contracţie pe R n ).

5
Studiul metodelor iterative este axat pe soluţionarea a două probleme
importante:
(1) Dată fiind o metodă iterativă, să se stabilască dacă ea este convergentă (i.e.
verificarea uneia dintre condiţiile echivalente din teorema 2.1.2).
(2) Date fiind două metode iterative, să se stabilească care este cea cu viteza de
convergenţă mai mare.
De obicei, o metodă iterativă se bazează pe o descompunere a matricei
sistemului (2.1),
A= P−N (2.10)
unde P  GL(n) , iar P −1 este “uşor” de determinat.
Atunci, (2.1) 
Px = Nx + b (2.11)

x = P −1 Nx + P −1b (2.12)
Deoarece (2.12) are o formă asemănătoare cu (2.2), i se asociază o metodă
iterativă, ce generează următorul proces iterativ:
( ) ( ) ( )
x (k ) k , unde x (k + 1) = P − 1 N x (k ) + P − 1b () k  0, G = P -1 N şi c = P 1b . (2.13)

6
3.2.2. Metode iterative clasice: Jacobi, Gauss-Seidel, suprarelaxare
1. Descrierea metodei
a) Metoda Jacobi
Cea mai simplă descompunere (2.10) a matricei A , este: A = D − (L + U ) , unde
aij , i  j aij , i  j
D = diag(a11 ,...,ann ) , − L = lij( )
i , j = 1,n
, lij =  ( )
şi − U = uij i , j =1,n , uij =  ,
0, i  j 0, i  j
iar P = D şi N = L + U (2.14)

Atunci, în ipoteza: aii  0 , i = 1,n (2.15)


(2.11) devine: x = D −1 (L + U )x + D −1b (2.16)
deci matricea Jacobi de iterare este G j = D −1 (L + U )
iar vectorul de iterare c j = D −1b (2.17)
Metoda Jacobi generează următorul proces iterativ x (k ) k : ( )
x (k + 1) = D − 1 (L + U )x (k ) + D − 1b , () k  0 şi x (0 )  R n (2.18)
aproximaţie iniţială a soluţiei exacte x* 
n
( )
bi −  aij x jk
j =1
xi(k + 1) = , () i = 1, n
j 1
(2.19)
aii 7
b) Metoda Gauss-Seidel
Procesul iterativ fundamentat de metoda Gauss-Seidel “apropiat” de (2.18)
este obţinut astfel ca determinarea componentei i a vectorului x (k + 1) să
folosească atât componentele vectorului x (k ) , cât şi pe cele ale lui x (k + 1) calculate
anterior x1(k + 1) ,...,xi(−k 1+ 1) , ceea ce duce , în particular şi la o economisire a spaţiului
de memorare.
Se utilizează, în aceeaşi ipoteză (3.84), următoarea descompunere a matricei
A:
A : P = D − L  GL(n ) şi N = −U (2.20)
(2.11) devine: x = (D − L )−1Ux + (D − L )−1 b (2.21)
Deci, matricea de iterare Gauss-Seidel este GG − S = (D − L )−1U
iar vectorul de iterare cG − S = (D − L )−1 b (2.22)
Atunci, şirul de aproximaţii ale soluţiei exacte x* este definit prin:
x (k + 1) = (D − L )− 1Ux (k ) + (D − L )− 1 b (2.23)

i −1
aij x (jk + 1) − aij x (jk )
n
bi −  
xi(k + 1) =
j =1 j =i +1
, i = 1, n (2.24)
aii
8
c) Metoda (SOR) (a suprarelaxării succesive)
(SOR) este o metodă iterativă ce accelerează convergenţa şirului (2.23), prin
intermediul unui parametru pozitiv, w numit parametru de relaxare.
Ipoteza (2.15) rămâne valabilă şi în acest caz. Fie w  0 . Atunci, se consideră
următoarea descompunere a matricei A
D 1− w
P= − L şi N = D −U (2.25)
w w
−1 −1
 1 − w   D
(2.11) devine: x =  − L  
D

 w  D − U  x +  − L  b (2.26)
w      w 
−1
1 − w
iar matricea de iterare este GSR =  − L  
D
 w D + U 
w   
−1
şi vectorul de iterare c SR =  − L  b
D
(2.27)
w 
( )
Se consideră x (k ) k definit prin:
−1 −1
1  1− w  1 
x (k + 1) =  D − L   D + U  x (k ) +  D − L  b (2.28)
w   w  w 
( k + 1) w  i −1 ( k + 1)
n
(k)

 xi = (1 − w)xi +
k
bi  aij x j −  aij x j  , i = 1, n (2.29)
aii  j = 1 j =i +1 

9
2. Convergenţa metodei
a) Metoda Jacobi
Conform teoremei 2.1.2, metoda Jacobi este convergentă dacă şi numai
dacă  (GJ )  1 .
O condiţie suficientă ca  (GJ )  1 este ca matricea A să fie strict diagonal
dominantă
Definiţia 2.2.1.:
A  R n n s.n. strict diagonal dominantă dacă
n
aii   aij , () i = 1, n (2.30)
j =1
j 1

Într-adevăr, ţinând cont că  (G j )  G j obţinem:  (G j )  max 


n n a
ij
 1 . În plus, s-
 i = 1 j = 1 aii
j 1
a demonstrat că viteza de convergenţă creşte, cu cât diagonala lui A este mai
“dominantă”.

10
Totuşi, condiţia (2.30) este destul de restrictivă. Există situaţii destul de frecvent
întâlnite, mai ales în probleme numerice de teoria ecuaţiilor cu derivate parţiale,
când aceasta nu este satisfăcută. În astfel de cazuri, se foloseşte cu succes,
următorul rezultat:
Propoziţia 2.2.2.:
Dacă A  R nn este ireductibilă şi slab diagonal-dominantă, atunci metoda
Jacobi converge.
Definiţia 2.2.3.:
A  R nn s.n. ireductibilă dacă nu poate fi adusă prin permutări de linii şi de
coloane sub forma
 A11 A12 
A =   (2.31)
 O A22 
unde A11 şi A22 sunt blocuri pătrate.

11
Definiţia 2.2.4.:
n
a) A  R n n
s.n. slab diagonal dominantă dacă aii   aij , () i = 1, n şi
j =1
j i
() k  1,...,n a.i.
n
a kk   aij (2.32)
j =1
j k

b) A  R nn s.n. diagonal dominantă dacă


n
aii   aij , () i, j = 1, n (2.33)
j =1
j i
Demonstraţie:
A ireductibilă şi slab diagonal ( )
dominantă   I n − D −1 A  1 . Dar
I n − D −1 A = G j . Deci, se aplică teorema 2.1.2.

12
b) Metoda Gauss-Seidel
Conform teoremei 2.1.2, metoda Gauss-Seidel este convergentă dacă şi
numai dacă  (GGS )  1 .
Pentru ca  (GGS )  1 , este suficient ca A să aibă una din următoarele
proprietăţi:
i) A este strict-diagonal dominantă;
ii) A este diagonal dominantă şi ireductibilă.
Argumentarea este analogă cu cea din cazul metodei Jacobi.

13
c) Metoda (SOR)
Următoarea teoremă oferă o condiţie necesară de convergenţă:

Teorema 2.2.8. (Kahan):


 (GSR )  w − 1 (2.34)
Deci, o condiţie necesară de convergenţă a metodei (SOR) este
w  (0 ,2 ) (2.35)
Demonstraţie:
 
det (G SR ) = det (D − wL )− 1 det(1 − w)D + wU  = det (1 − w)I n + wD −1U =
n
det(1 − w)I n  = (1 − w) . Dar det (GSR ) =  i , i   (GSR ) . Deci, are loc (2.35). Conform
n
i =1
teoremei 2.1.2, rezultă, din (2.34), (2.35)
Observaţia 2.2.9.:
Conform teoremei 2.1.2, metoda (SOR) converge pentru w  (0 ,1 .

14
Teorema 2.2.10. (Ostrowski-Reich):
Dacă A este simetrică şi pozitiv-definită, atunci metoda (SOR) converge dacă
şi numai dacă w  (0 ,2) .
Demonstraţie:
Se aplică teorema 2.2.5. În acest caz, P + PT − A =  − 1 D .
2
w 
Observaţia 2.2.11.:
Dacă A  R nn este tridiagonală , simetrică şi pozitiv-definită, atunci există
un parametru optim de relaxare w* =
1
( )
şi  G*SR = w* − 1 , dacă
1+ 1−  Gj 2 ( )
( )
 G j  0 , iar dacă  (G j ) = 0 , w* = 1 şi  (GSR ) = 0 .

Analiză numerică 15
3) Evaluarea erorii de aproximare
a) Metoda Jacobi
Evaluăm
( )( ) ( ) (
x (k ) − x (k − 1) = x (k ) − x* − x (k − 1) − x* = x (k ) − x* − G j x (k ) − x* = )
( )(
= I n − G j x (k ) − x* ) (2.36)
Conform teoremei 2.1.2, (I n − G j ) GL(n) şi (I n − G j )−1 
1
. Deci,
1n − G j

x (k ) − x*  x (k ) − x (k + 1) , () k  0
1
(2.37)
1− Gj

( )
Din (2.36), rezultă că x (k ) − x* = (I n − G j )−1 G kj x (0 ) − x (1) şi de aici,
k
Gj
x (k ) − x*  x (0 ) − x (1) (2.38)
1− Gj
unde  este norma matriceală din teorema 2.1.2, pentru care are loc (iii) şi  , în
R n este norma vectorială corespunzătoare.
(2.37) reprezintă o evaluare à posteriori, iar (2.38) à priori a erorii de aproximare.
Pentru a obţine evaluările erorilor de aproximare pentru metoda Gauss-
Seidel şi (SOR), se procedează analog.
16
Algoritmul Jacobi:
1. Se dau matricele A  R nn , b  R n1 şi eroarea  .
n n aij
2. Se calculează  = G j = max  (unde G j = D 1 (L + U ) .
i = 1 j = 1 aii
j i

Se alege o aproximaţie iniţială x (0 ) .


3. Fie k = 1 .
n
( )
bi −  aij x jk −1
j =1
4. Pentru i = 1,n , se calculează: xi(k ) = j 1
.
aii
 k x (1) − x (0 )
5. Dacă   , se trece la 7.
1− 
6. Se adună 1 la k şi se trece la 4.
Procedura este completă. Soluţia sistemului Ax = b este x (k ) .

17
Algoritmul Gauss-Seidel:
1. Se dau matricele A  R nn , b  R n1 şi eroarea  .
n  n
a sj   s − 1 a sj 

2. Se calculează  = max    / 1 −  .
s = 1  j = s + 1 a ss    a ss 
   j =1 
Se alege o aproximaţie iniţială x (0 ) .
3. Fie k = 1 .
bi −  aij x (jk ) −
n n
(k −1)
 ij
a k
4. Pentru i = 1,n , se calculează: xi(k + 1) = j =1 j =i +1
.
aii
 k x (1) − x (0 )
5. Dacă   , se trece la 7.
1− 
6. Se adună 1 la k şi se trece la 4.
Procedura este completă. Soluţia sistemului Ax = b este x (k ) .

Analiză numerică 18
Algoritmul suprarelaxării:
1. Se dau matricele A  R nn , b  R n1 , eroarea  şi parametrul de relaxare w .
−1
1− w
2. Se calculează  = GRS , unde G RS =  D − L   
1
D +U .
w   w 
Se alege o aproximaţie iniţială x (0 ) .
3. Fie k = 1 .
4. Pentru i = 1,n , se calculează:
i −1
wbi − w  aij x (jk ) + (1 − w)xi(k ) − w
n
 aij k (k )
xi(k + 1) =
j =1 j =i +1
.
aii
 k x (1) − x (0 )
5. Dacă   , se trece la 7.
1− 
6. Se adună 1 la k şi se trece la 4.
Procedura este completă. Soluţia aproximativă a sistemului Ax = b este x (k ) .

19
3.2.3. Metode de relaxare şi de gradient
Rezolvarea unui sistem de ecuaţii liniare printr-o metodă iterativă poate fi
echivalentă cu problema minimizării unei forme pătratice.
În metodele de relaxare, se porneşte cu o aproximaţie iniţială a soluţiei, x (0 ) ,
căreia îi corespunde vectorul reziduu
r (0 ) = Ax (0 ) − b (2.39)
x (0 ) este modificat sistematic a.i. în cele din urmă, r (0 ) să se anuleze.

Pentru aceasta, asociem sistemului de ecuaţii liniare Ax = b , forma pătratică:


1 n n
J (x ) =  Ax, x  −  bx , x =  aij xi x j –  bi xi
1
(2.40)
2 2 i , j =1 i =1

20
Propoziţia 2.3.1.:
Dacă A  R nn este simetrică şi pozitiv–definită, iar x* este soluţia exactă a
sistemului de ecuaţii liniare Ax = b , atunci x* este punct de minim pentru forma
pătratică asociată, J , şi reciproc.
Demonstraţie:
“  ” Fie x* , soluţie exactă a sistemului de ecuaţii liniare Ax = b . Considerăm
următoarea formă pătratică:
E : R n → R , E (x ) =
1
2
( )( )
 A x − x* , x − x*  (2.41)

Conform ipotezei, () x  x* , E (x )  0 şi E (x* ) = 0 . Dar, E (x ) = J (x ) +  Ax* , x*  .În


1
2
consecinţă, rezultă că x* este punct de minim pentru J .
“  ” Fie x* punct de minim pentru J . Atunci, gradJ x* = 0 . Dar cum, ( )
J n
( )
=  aij x j – bi , i = 1, n , gradJ x* = Ax* − b . Deci, x* este soluţie a sistemului dat.
xi j = 1

21
Fie v , o aproximaţie a soluţiei exacte. Considerăm o dreaptă d , ce trece prin v şi
este paralelă cu o direcţie dată p , numită direcţie de relaxare, i.e. d = v + cp c  R.
Scopul: modificarea lui v de-a lungul direcţiei p a.i. valoarea J (v ) să scadă i.e.
determinarea v0  d a.i.
J (v0 ) = min J (v) (2.42)
v d

Atunci: J (v) = J (v + cp ) =  A(v + cp ),(v + cp)  −  b,(v + cp ) =


1
Fie v  d .
2
c2
=  Ap , p  +c  r , p  + J (v ) 
2
c2
J (v) =  Ap , p  +c  r , p  + J (v ) (2.43)
2
Observăm că J (v ) îşi atinge minimul pentru:
 r, p 
cmin = − (2.44)
 Ap , p 
(şi r⊥p , pentru ca J (v)  J (v ) ). Atunci,
r  = Av − b = A(v + cmin p) − b = r + cmin Ap (2.45)
 r, p 
şi  r , p = r , p  −  Ap , p = 0 . Deci, r ⊥p .
 Ap , p 

22
Metodele de relaxare diferă prin modul de alegere a direcţiei de relaxare.
Spre exemplu, metoda de relaxare cu paşi separaţi (Southwell): la fiecare pas se
n
modifică numai componenta cea mai mare a reziduului rk = max ri , ceea ce
i =1
corespunde cu alegerea ca direcţie de relaxare a vectorului unitate ek . Atunci:
k  r , ek  r
cmin =− =− k (2.46)
 Aek ,ek  akk
vi , ik
r 
Obţinem: v  = v + cmin
k
ek = v − k ek =  rk (2.47)
a kk  k a ,i=k
v −
 kk
De asemenea,
 rk
rk i
r − aik , i  k
r  = Av  − b = r − Aek =  a kk (2.48)
a kk 0,
 i=k
Convergenţa acestei metode este lentă, ea fiind satisfăcătoare doar în cazul
în care matricea sistemului este predominant dominantă.

23
Metoda Gauss-Seidel poate fi considerată ca metodă de relaxare, în care
direcţiile de relaxare, se aleg succesiv e1 ,e2 ,...,en , în mod ciclic: p (k ) = ei , i = k (mod
n).
Metoda suprarelaxării foloseşte aceleaşi direcţii de relaxare ca mai sus,
înlocuind pe fiecare direcţie pe cmin cu wcmin .
Metodele de relaxare impun ca singură restricţie privind alegerea direcţiei
de relaxare p , ca aceasta să nu fie ortogonala vectorului reziduu, r i.e  r , p  0 .

În metodele de gradient, legătura între cei doi vectori este mult mai strânsă.

24
1. Metoda celei mai rapide coborâri
Se alege ca direcţie de relaxare, opusul reziduului de la iteraţia anterioară
i.e.:
p (k ) = −r (k − 1) (2.49)

Pe această direcţie, punctul de minim se alege:


(k)  r (k − 1) , p (k )   r (k − 1) , r (k − 1)  1
cmin = = =
(
 Ap (k ) , p (k )   Ar (k − 1) , r (k − 1)  R r (k − 1) ) (2.50)

 Ax , x 
unde R(x ) = , x  0.
 x, x 
2. Metoda gradientului conjugat
Fie x (0 ) , aproximaţie iniţială a soluţiei exacte x* . Considerăm:
p (1) = −r (0 ) (2.51)
Atunci:
(1)  r (0 ) , p (1)   r (0 ) , r (0 ) 
cmin = – = (2.52)
 Ap , p   Ar (0 ) , r (0 ) 
(1) (1)

(1) (0) (1) (1) (0)  r (0 ) , r (0 )  (0 )


x = x + cmin p = x − r (2.53)
(0 ) (0 )
 Ar , r 
25
În cele ce urmează, vom alege direcţiile de relaxare a.i. să fie:
- succesiv A -ortogonale i.e.
 Ap (k ) , p (k −1) = p (k ) , Ap (k −1)  (2.54)
- o combinaţie liniară între r (k −1) şi p (k − 1) i.e.
p ( k ) = − r ( k − 1 ) + d k + 1 p ( k − 1) (2.55)
unde d k −1 se obţine din relaţia:
 r (k − 1) , Ap (k − 1) 
d k −1 = , k 1 (2.56)
p (k − 1)
, Ap (k − 1)

Atunci,
( k)  r (k − 1) , p (k ) 
cmin = − (2.57)
 p (k ) , Ap (k ) 
x (k ) = x (k − 1) + c (k ) p (k )
min (2.58)
iar,
(k ) Ap (k )
r (k ) = r (k −1) + cmin (2.59)

26
Formulele (2.54)-(2.59) se pot simplifica (ca scriere) dacă facem următoarele
observaţii:
 r (k ) ,r (k −1) = 0 (2.60)
 r (k ) , p (k −1) = 0 (2.61)
 r (k ) , p (k ) = 0 (2.62)
ce se obţin prin calcul direct. Avem astfel:
(k − 1) , r (k − 1) 
(k ) =  r
cmin (2.63)
 Ap (k ) , p (k ) 
 r (k −1) , r (k −1) 
d k −1 = , k2 (2.64)
r (k − 2 ) (k − 2 )
,r 

27
3. Metoda direcţiilor conjugate
Această metodă constă în determinarea soluţiei sistemului, x* , utilizând o
descompunere liniară a acesteia după o bază de vectori A -ortogonali din R n i.e.
n
*
x =  ck pk (2.65)
k =1
unde p1 ,.., pn  satisfac:
 Ap i , p j = pi , Ap j =  ij , () i, j = 1, n (2.66)
iar conform (2.66),
 b, pk 
ck = , () k (2.67)
 Apk , pk 
n
(căci  Ax , pk = b , pk   c j  Ap j , pk = b , pk  .
*
j =1
(2.65) 
n  b , pk 
*
x =   Ap , p  pk (2.68)
k =1 k k

28
Deci, problema este rezolvată dacă vom determina p1 ,...,pn  o bază de vectori A -
ortogonali. În acest scop, vom utiliza o metodă de ortogonalizare de tip Gram-
Schmidt. Pentru aceasta, considerăm v1 ,...,vn , un sistem de vectori liniari
independenţi.
n −1
Fie p1 = v1 , p2 = v2 + c21 p1 ,..., pn = vn +  cnk pk (2.69)
k =1
Determinăm ckj , k, j = 1, n , j  k a.i.
 Apk , p j = pk , Ap j = 0 (2.70)
Atunci, obţinem din (2.69) şi (2.70),
 Avk , p j 
ckj = − , k, j = 1, n , j  k (2.71)
 Ap j , p j 

În particular, dacă considerăm vi = ei , i = 1,n avem:


 ak , p j 
ckj = − , j  k unde ak = Aek (2.72)
 Ap j , p j 

29
Algoritmul Southwell:
1. Se dau matricele A  R nn , simetrică şi pozitiv-definită, b  R n1 şi eroarea  .
2. Se alege o aproximaţie iniţială x (0 ) .
Se calculează reziduul r (0 ) = Ax (0 ) − b .
3. Fie k = 1 .
n
4. Se alege rk = max ri(k − 1) .
i =1
(k ) = − rk .
5. Se calculează cmin
akk
 x (k − 1) , i  k
(k) 
i
6. Se calculează pentru i = 1,n , xi =  (k − 1) rk .
 xi − ,i=k
 a kk

7. Se calculează pentru i = 1,n , ri(k ) = ri(k −1) − k aik .


r
akk
8. Dacă r (k )   , se trece la 10.
9. Se adună 1 la k şi se trece la 4.
10. Procedura este completă. Soluţia aproximativă este x (k ) .
30
Algoritmul celei mai rapide coborâri:
1. Se dau matricele A  R nn , simetrică şi pozitiv-definită, b  R n1 şi eroarea  .
2. Se alege o aproximaţie iniţială x (0 ) .
Se calculează reziduul r (0 ) = Ax (0 ) − b .
3. Fie k = 1 .
4. Se alege p (k ) = −r (k −1) .
(k) (
r (k − 1) , r (k − 1) )
(
5. Se calculează cmin = − (k −1) (k −1) .
Ar ,r )
( k) ( k − 1) (k ) (k −1)
6. Se calculează: x = x − cmin r .
(k) (k − 1) (k ) (k −1)
7. Se calculează: r = r − c Ar min .
8. Dacă r (k )   , se trece la 10.
9. Se adună 1 la k şi se trece la 4.
10. Procedura este completă. Soluţia aproximativă este x (k ) .
Analiză numerică 31
Algoritmul gradientului conjugat:
1. Se dau matricele A  R n n , simetrică şi pozitiv-definită, b  R n1 şi eroarea  .
2. Se alege o aproximaţie iniţială x (0 ) .
Se calculează reziduul r (0 ) = Ax (0 ) − b .
3. Se alege p (1) = −r (0 ) .
(1) (
r (0 ) , p (0 ) )
4. Se calculează c min = −
((
Ap , p1) (1)
.
)
(1)
5. Se calculează: x (1) = x (0 ) − c r (0 ) .
min
6. Fie k = 2 .
(r (k − 1) , Ap (k − 1) )
7.
(p , Ap k − (1) )
Se calculează: d k − 1 = − k − (1)

8. Se calculează: p (k ) = − r (k − 1) + d k − 1 p (k − 1)
(k) (
r (k − 1) , p (k ) )
9. Se calculează: cmin = − (k )
p , Ap( (k)
.
)
(k)
10. Se calculează: x = x (k − 1)
−c
k
p (k ) .
min
(k)
11. Se calculează: r = r (k − 1)
− cmin Ap (k ) .
k

12. Se testează dacă r (k )   şi în caz afirmativ se trece la 14.


13. Se adună 1 la k şi se trece la 7.
14. Procedura este completă. Soluţia aproximativă este x (k ) .
32

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