Bonjour,
j'ai un algo à rédiger sur Matlab qui reprend la méthode itérative de Gauss seidel, malheureseument il y a quelque chose qui ne fonctionne pas et je n'arrive pas a voir ce que c'est. Est ce que vous pouvez m'aider ? merci
function [Solution,K]=GS219128(a,b,x0,EpsGS,Nmax)
% taille de la matrice b
n = length(b);
% teste la matrice a, vérifie si les pivots sont différents de 0
for i=1:n
if a(i,i)==0
disp('NaN')
k = 0
break,
end
end
x = zeros(n,Nmax);
x(:,1) = x0;
k = 1;
S1 = 0; S2 = 0;
Eps_calc = 1e-1;
while (k<Nmax) && (Eps_calc>EpsGS)
k = k+1;
for i=1
for j=2:n
S2 = a(1,j)*x(j,k);
S2 = S2+ S2;
end
end
coeff=1/a(i,i);
x(i,k) = coeff*(b(i)-S1-S2);
Eps_calc = norm(x(:,k)- x(:,k-1));
for i = 2:n
for j = 1i-1)
S1 = a(i,j)*x(j,k);
S1 = S1+ S1;
end
for j = (i+1):n
S2 = a(i,j)*x(j,k);
S2 = S2+ S2;
end
coeff=1/a(i,i);
x(i,k) = coeff*(b(i)-S1-S2);
Eps_calc = norm(x(:,k)- x(:,k-1));
end
end
if (k>Nmax)
Solution=NaN;
fprintf('\n Le nombre d''itérations est %f',Nmax);
end
K=k+1;
Solution = x(:,k);
end
PS : j'ai recherché sur inetrnet d'autres méthodes mais le professeur veut que l'on utilise la boucle while avec deux paramètres d'arrêt puis des boucles for
MErci
-----