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 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| %Programme principal de comparaison entre
% méthodes ithératives: J, Gs, Sor (avec w=w0
n=input('donner la taille de la matrice');
A=input('Donner la matrice A : \n');
b=input('Donner le vecteur b : \n');
epsilon=input('donner epsilon\n');
max=input('donner le nombre maximal d iteration\n');
w=input('donner omega\n')
%methode jacobi
disp('debut de jacobi');
n1=n;A1=A,b1=b;eps=epsilon;max1=max;w1=w;
[X,k]=fjac(A1,b1,eps,n1,max1)
disp('fin de jacobi')
%methode de Gauss_Seidel
disp('debut de Gauss_Seidel')
n1=n;A1=A,b1=b;eps=epsilon;max1=max;w1=w;
[X,k]=fGS(A1,b1,eps,n1,max1)
disp('fin de Gauss_Seidel');
%methode de SOR
disp('debut SOR ');
n1=n;A1=A,b1=b;eps=epsilon;max1=max;w1=w;
[X,k]=fsor(A1,b1,eps,n1,max1,w1)
disp('fin SOR ');
ppor les 3 fonction
%methode de Gauss_Seidel de resolution de l equation Ax=bfunction [X,k]=fGS(A,b,epsilon,n,max);
D=diag(diag(A));
E=-tril(A,-1);
F=-triu(A,1);
C=inv(D-E)*b;
L=inv(D-E)*F;
x(:,1)=zeros(n,1);
err=1;
k2=1;
while(err>epsilon)&(k<max)
x(:,k+1)=L*x(:,k)+C;
err=norm(x(:,k+1)-x(:,k));
k=k+1;
end
x(:,k)
k
%methode de jacobi de resolution de l equation Ax=b
function [X,k]=fjac(A,b,epsilon,n,max);
D=diag(diag(A));
N=D-A;
x(:,1)=zeros(n,1);
for k=1:max
x(:,k+1)=inv(D)*(N*x(:,k)+b);
erreur=norm(x(:,k+1)-x(:,k));
if erreur<epsilon
break
end
end
x(:,k)
k
%methode de SOR de resolution de l equation Ax=b
function [X,k3]=fsor(A,b,epsilon,n,max,w)
D=diag(diag(A));
E=-tril(A,-1);
F=-triu(A,1);
C=w*inv(D-w*E)*b;
L=inv(D-w*E)*F;
J=[(1-w)*D+w*F];
L=L*J;
x(:,1)=zeros(n,1);
err=1;
k=1;
while(err>epsilon)&(k<max)
x(:,k+1)=L*x(:,k)+C;
err=norm(x(:,k+1)-x(:,k));
k=k+1;
end
k
x=x(:,k) |
Partager