je viens de trouver:
http://phys.ucc.ie/~oll/AM2054/programs/Jacobi and gauss-Seidel.htm
la fonction en c++
au lieu de faire un do while pour savoir si on approche le taux d'erreur voulu, je ne fais que réitérer tant que la valeur n'est pas = à k....
ça donne
gasei(a,b,x0,k)
Prgm
if coldim(a) != rowdim(a) then
disp "matrice non carree"
return 0
elseif coldim(b)!=1 then
disp "nombre de colonne !=1
return 0
elseif coldim(x0)!=1 then
disp "nombre de colonne !=1
return 0
elseif rowdim(a) != rowDim(b) then
disp "le vecteur colonne b n'a pas le même ordre que a"
return 0
elseif rowdim(a) != rowDim(x0) then
disp "le vecteur colonne x0 n'a pas le même ordre que a"
return 0
elseif k<1 then
disp "k est inferieur a 1"
return 0
else
local count, tmp
for count,0, k
for i,0,rowdim(a)
tmp=b[i]
for j,0,i
tmp=tmp-a[i][j]*x0[j]
endfor
x0[i]=tmp/a[i][i]
endfor
endfor
for i,0, rowdim(x0)
disp x0[i]
endfor
endif
endprgm
à l'exécution
[10,0,0;1,15,0;-1,1,20] -> a
[2;12;17] -> b
[0;0;0] -> x0
1 -> k
gasei(a,b,x0,k)
il me retourne dimension et va à la ligne
tmp=b[i]
une idée?