[Algorithme] déterminant de matrice

Résolu/Fermé
Omega_55 - 14 juil. 2006 à 14:55
 Misheru tin - 8 déc. 2014 à 04:39
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

bakarim Messages postés 32 Date d'inscription samedi 23 août 2008 Statut Membre Dernière intervention 15 juillet 2009 3
22 févr. 2009 à 13:06
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.
22
C'est quoi: Inc(...)
0
Misheru tin > Hsissen3
8 déc. 2014 à 04:39
inc() sa veux dire incrementé de
0
Utilisateur anonyme
26 mars 2008 à 10:21
salut,

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


merci à votre aide
3
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+
2
zanu Messages postés 1175 Date d'inscription samedi 16 août 2008 Statut Membre Dernière intervention 14 janvier 2020 38
4 sept. 2009 à 15:06
quelqu'un aurait il le code en C (recursif ou iteratif) svp?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zanu Messages postés 1175 Date d'inscription samedi 16 août 2008 Statut Membre Dernière intervention 14 janvier 2020 38
4 sept. 2009 à 15:37
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.
0
je cherche un algorithme en language pascal qui permet de caluler le determinant d'une matrice d'ordre n*n
-1
rien
-1

Discussions similaires