Bonjour à tous.
J'aurais besoin d'aide car j'aimerai avoir le code matlab (ou scilab) de la méthode de Gauss-Seidel par blocs.
J'ai déjà le code de la méthode par point, le voici :
---------------------------------------------------------
function [x]=gauss(A,b,xo,maxit,epsi)
D=diag(diag(A)); %on extrait la diagonale de A
E=-tril(A,-1); F=-triu(A,1); %on extrait les parties triangulaires inf et sup de A sans la diagonale
n=length(b);
x=zeros(n,1);
aux=xo
res=1;
iter=0;
while res>epsi & iter<maxit %critères d'arrêts
for i=1:n
x(i)=(1/A(i,i))*(b(i)+E(i,*x+F(i,
*aux);
aux(i)=x(i);
end
iter=iter+1;
res=(norm(b-A*x,inf)/norm(b,inf));
end
---------------------------------------------------------
On décompose par blocs de la manière suivante :
où :
si
, 0 sinon.
si
, 0 sinon.
si
, 0 sinon.
On décompose
et
L'algorithme d'une itération est le suivant :
-------------------------------------------------
pour i=1 à n
fin pour i
-------------------------------------------------
A chaque itération i on doit résoudre un système linéaire de dimension (On le fait directement).
Merci d'avance à tout ceux qui réfléchiront à mon problème.
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :