[Algorithme] déterminant de matrice

Résolu/Fermé
Signaler
-
 Misheru tin -
Salut à tous,

Quelqu'un connaît il un algorithme de calcul de déterminant (pour une matrice carrée) autre que la règle des cofacteurs ?

J'ai essayé les cofacteurs en C++ avec un algorithme récursif, c'est une horreur. Il peut mettre plus de 10 secondes à calculer le déterminant d'une matrice 10x10 ... :-(

Merci pour vos idées.

A+

7 réponses

Messages postés
32
Date d'inscription
samedi 23 août 2008
Statut
Membre
Dernière intervention
15 juillet 2009
2
voila le programme on pascal qui vous permet de calculer det(*par kamal bakarim *)
program determinant;
uses crt;
var n, i, j: integer;
mat : array[0..20,0..20] of real;

procedure remplire;
begin
writeln('entrez les elements du matrice');
for i := 0 to n-1 do for j := 0 to n-1 do read(mat[i, j]);
end;

procedure subst(p:integer);
var t:integer;
mat0 : array[0..20, 0..20] of real;
begin
t := -1;
for i := p+1 to n-1 do
begin
if mat[i,p] <> 0 then
begin
for j := 0 to n-1 do
begin
mat0[p,j] := mat[i,j];
mat0[i,j] := mat[p,j];
end;
t := i;
i := n + 1;
end;
end;
if t <> -1 then
begin
for i := 0 to n-1 do
begin
for j := 0 to n-1 do if (i <> p)and(i <> t) then mat0[i,j] := mat[i,j];
end;
for i := 0 to n-1 do for j := 0 to n-1 do mat[i,j] := mat0[i,j];
end;
end;

function det(e :integer) : real;
begin
det := 1;
for i := 0 to n-1 do det := det * mat[i,i];
if (e mod 2 = 1) then det := det * (-1);
end;

var t, k, e : integer;
cont : boolean;

begin
writeln(' calcule du determinant ');
writeln('entrez l''ordre du matrice dont le determinant est a calculer: ');
readln(n);
remplire();
t := 0;
k := 1;
e := 0;
cont := true;
while (k < n)and(cont)do
begin
if mat[t,t] = 0 then
begin
subst(t);
inc(e);
end;
if mat[t,t] = 0 then
begin
writeln('le determinant de cette matrice est: 00');
cont := false;
end
else
begin
for j := n-1 downto t do mat[k, j] := mat[k,j] - ((mat[k, t]*mat[t, j])/mat[t, t]);
inc(k);
if (k = n)and(t < n - 1) then
begin
inc(t);
k := t + 1;
end;
end;
end;
if cont then
writeln('le determinant de cette matrice est: ', det(e):5:3);
readln;
readln;
readln;
end.
21
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

C'est quoi: Inc(...)
> Hsissen3
inc() sa veux dire incrementé de

salut,

je trouve un probléme pour calculer l'inverse et le determinent d'un matrice en languaga java


merci à votre aide
Re-salut tout le monde,

Si jamais, j'ai trouvé un début de réponse à mon problème: je fais une décomposition LU de la matrice, puis je calcule le déterminant avec les éléments diagonaux uniquement.

C'est bien plus rapide, mais encore bien plus lent que MATLAB. Je me demande comment ils font...

*L'algèbre linéaire, quand ça te tient... ;-) *

A+
Messages postés
1175
Date d'inscription
samedi 16 août 2008
Statut
Membre
Dernière intervention
14 janvier 2020
36
quelqu'un aurait il le code en C (recursif ou iteratif) svp?
Messages postés
1175
Date d'inscription
samedi 16 août 2008
Statut
Membre
Dernière intervention
14 janvier 2020
36
je suis pas informaticien, et ça me plait juste de voir comment tourne les algorithmes. je voudrais le tester dans un compilateur C.
merci de répondre plus gentiment et de cacher de temps en temps vos caractères bestiaux.
je cherche un algorithme en language pascal qui permet de caluler le determinant d'une matrice d'ordre n*n