126
4 M´ ethodes it´ eratives pour la r´ esolution des syst` emes lin´ eaires
0
0.5
1
1.5
2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
ω
ρ
SSOR
SOR
Fig. 4.1. Rayon spectral de la matrice d’it´ eration des m´ ethodes SOR et SSOR en
fonction du param` etre de relaxation ω, pour la matrice tridiag 10 (−1, 2, −1)
Programme 15 - jor : M´ ethode JOR
function [x,iter]=jor(A,b,x0,nmax,tol,omega)
%JOR M´ ethode JOR
% [X,ITER]=JOR(A,B,X0,NMAX,TOL,OMEGA) tente de r´ esoudre le syst` eme
% A*X=B avec la m´ ethode JOR. TOL est la tol´ erance de la m´ ethode.
% NMAX est le nombre maximum d’it´ erations. X0 est la donn´ ee initiale.
% OMEGA est le param` etre de relaxation.
% ITER est l’it´ eration ` a laquelle la solution X a ´ et´ e calcul´ ee.
[n,m]=size(A);
if n ˜= m, error(’Seulement les syst` emes carr´ es’); end
iter=0;
r = b-A*x0; r0=norm(r); err=norm(r); x=x0;
while err > tol & iter < nmax
iter = iter + 1;
for i=1:n
s = 0;
for j = 1:i-1, s=s+A(i,j)*x(j); end
for j = i+1:n, s=s+A(i,j)*x(j); end
xnew(i,1)=omega*(b(i)-s)/A(i,i)+(1-omega)*x(i);
end
x=xnew; r=b-A*x; err=norm(r)/r0;
end
return
Le Programme 16 propose la m´ ethode SOR. En prenant omega=1, on obtient l’algorithme de Gauss-Seidel.
4 M´ ethodes it´ eratives pour la r´ esolution des syst` emes lin´ eaires
0
0.5
1
1.5
2
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
ω
ρ
SSOR
SOR
Fig. 4.1. Rayon spectral de la matrice d’it´ eration des m´ ethodes SOR et SSOR en
fonction du param` etre de relaxation ω, pour la matrice tridiag 10 (−1, 2, −1)
Programme 15 - jor : M´ ethode JOR
function [x,iter]=jor(A,b,x0,nmax,tol,omega)
%JOR M´ ethode JOR
% [X,ITER]=JOR(A,B,X0,NMAX,TOL,OMEGA) tente de r´ esoudre le syst` eme
% A*X=B avec la m´ ethode JOR. TOL est la tol´ erance de la m´ ethode.
% NMAX est le nombre maximum d’it´ erations. X0 est la donn´ ee initiale.
% OMEGA est le param` etre de relaxation.
% ITER est l’it´ eration ` a laquelle la solution X a ´ et´ e calcul´ ee.
[n,m]=size(A);
if n ˜= m, error(’Seulement les syst` emes carr´ es’); end
iter=0;
r = b-A*x0; r0=norm(r); err=norm(r); x=x0;
while err > tol & iter < nmax
iter = iter + 1;
for i=1:n
s = 0;
for j = 1:i-1, s=s+A(i,j)*x(j); end
for j = i+1:n, s=s+A(i,j)*x(j); end
xnew(i,1)=omega*(b(i)-s)/A(i,i)+(1-omega)*x(i);
end
x=xnew; r=b-A*x; err=norm(r)/r0;
end
return
Le Programme 16 propose la m´ ethode SOR. En prenant omega=1, on obtient l’algorithme de Gauss-Seidel.
