1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| function [distance,residu,message,kj]=jacobi(A,B,X0,Epsil,Nmax) définition de la fonction «jacobi»
distance = zeros(Nmax,1);
residu = zeros(Nmax,1);
N=length(A); permet de savoir le nombre de colonne de la matrice A
X=zeros(N,1);
X=X0;
distance(1) = 1;
residu(1)=norm(A*X-B);
k=1;
D=diag(diag(A),0);
E=-tril(A,-1);
F=-triu(A,1);
message='test';
tic;
distance(1)=10;
while (k<=Nmax) & (distance(k)>Epsil) tant que k est inférieur à Nmax et la distance de k supérieur à Epsil alors
k= k+1;
Y=D\(B+(E+F)*X);
distance(k) = norm(X-Y,inf);
residu(k)=norm(A*X-B);
X=Y;
end fin
t_jac=toc;
kj=k;
if k==Nmax +1 si
message ='itération maximale atteinte' affichage du texte «itération maximale atteinte»
%residu=norm(A*X-B);
else alors
message ='précision obtenue'
end fin
semilogy([1:k],distance(1:k,1),'+b',[1:k],residu(1:k,1),'xr') |
Partager