Académique Documents
Professionnel Documents
Culture Documents
La méthode de Jacobi est une méthode itérative pour résoudre les systèmes linéaires Ax=bAx=b,
où AA est une matrice carrée d'ordre nn et xx, bb sont des vecteurs de RnRn. Elle consiste en la
manipulation suivante : on décompose AA comme A=D−E−FA=D−E−F, où DD est une matrice
diagonale, −E−E est une matrice triangulaire inférieure, et −F−F est une matrice triangulaire
supérieure.
Soit f une fonction définie sur un ouvert U de Rn, à valeurs dans Rp. On peut écrire
f=(f1(x1,...,xn),...,fp(x1,...,xn)). Soit a un point de U où f est différentiable. La matrice
jacobienne de f en a est la matrice à p lignes et à n colonnes donnée par :
4.Algotithem de Méthode
D := Matrix(n, n);
F := Matrix(n, n);
E := Matrix(n, n);
J := Matrix(n, n);
for i to n do
for j to n do
if j < i then E[i][j] := -A[i][j];
elif i < j then F[i][j] := -A[i][j];
else D[i][j] := A[i][j];
end if;
end do;
end do;
print(E);
D1 := LinearAlgebrap[MatrixInverse](D);
print(D1);
for i to n do for j to n do J[i][j] := D1[i][j]*(E[i][j] + F[i][j]);
end do; end do; print(J);
gho := LinearAlgebra[CharacteristicMatrix](J, lambda);
print(gho);
print(LinearAlgebra[Determinant](gho));
print(LinearAlgebra[Eigenvalues](gho));
for i to n do somme := 0;
for j to n do if i <> j then somme := somme + abs(A[i][j]);
end if;
end do;
if abs(A[i][i]) < somme then print("la matrice n'a pas un diagonale dominante");
return ;
end if;
end do;
Xk1 := Vector(1 .. n);
Xk := Vector(1 .. n);
for i to n do somme := 0;
for j to n do
if i <> j then somme := somme + A[i][j]*X0[j];
end if;
end do;
Xk[i] := (B[i] - somme)/A[1][1];
end do;
print(Xk);
erreur := max(abs(Xk - X0));
print(erreur);
while eps < erreur do
for i to n do
somme := 0;
for j to n do
if i <> j then somme := somme + A[i][j]*Xk[j];
end if;
end do;
Xk1[i] := (B[i] - somme)/A[i][i];
end do;
erreur := max(abs(Xk1 - Xk));
Xk := Xk1;
print(Xk1);
end do;
print(Xk1);
X0=Xk;
return Xk1;
end proc
A := Matrix([[2, 2], [5, 7]]);
n := 2;
B := Vector([11, 13]);
X0 := Vector(1 .. n, 1);
Jacobi(A, B, X0, n, 0.1*10^(-5));
4. Réalisation
5. OUTPUT