ombredoree
Messages postés1Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention23 novembre 2007 23 nov. 2007 à 13:28
..La critique est aisée, mais l'art est difficile!
caco64
Messages postés69Date d'inscriptionjeudi 27 septembre 2007StatutMembreDernière intervention14 décembre 2007 8 oct. 2007 à 22:31
J'avais cru comprendre en effet que cette méthode était en o(n!), mais c'est vrai qu'en ce qui me concerne, les matrices que j'utilise dépassent rarement la dimension 6 ou 7, le temps de résolution n'est alors plus véritablement un pb.
J'ai également programmé un algo basé sur la méthode de triangulation qui doit être en o(n^3) si je ne me trompe pas. Par contre, je ne connaissais pas l'existence de ces algo en o(n^2....)
Merci beaucoup pour tes remarques JANSH, ça m'a permis de tester qu'effectivement une matrice 100*100, ça coince dur.
cs_janhsh
Messages postés31Date d'inscriptionlundi 6 novembre 2000StatutMembreDernière intervention24 janvier 2015 8 oct. 2007 à 13:36
C'est bien d'un point de vue théorique, pour les matheux, mais pas utilisable en pratique.
Ton algorithme est O(n!) rien que par le calcul du déterminant ... Si tu a une matrice de 100 x 100, il te faudra très longtemps pour l'inverse avec cet algorithme. (en jours et plus...)
De plus, pour des problèmes réels, le résultat sera erroné a cause du principe de la virgule flotante. (Sur ordinateur, les nombres étant stocké de façon échantilionnés avec une perte de précision).
En pratique, pour résoudre un système d'équations linéaire, on n'inverse jamais une matrice.
on utilise plutôt des méthodes comme la décomposition LU et la décomposition QR
On peut aussi utiliser des méthodes comme Gauß Doolittle, Gauß-Jordan O(n^3), Strassen O(n^2.807), Coppersmith-Winograd O(n^2,378), Banachiewicz, ...
Ces méthodes sont beaucoups plus précise et plus rapides même si l'algorithme est plus complexe.
23 nov. 2007 à 13:28
8 oct. 2007 à 22:31
J'ai également programmé un algo basé sur la méthode de triangulation qui doit être en o(n^3) si je ne me trompe pas. Par contre, je ne connaissais pas l'existence de ces algo en o(n^2....)
Merci beaucoup pour tes remarques JANSH, ça m'a permis de tester qu'effectivement une matrice 100*100, ça coince dur.
8 oct. 2007 à 13:36
Ton algorithme est O(n!) rien que par le calcul du déterminant ... Si tu a une matrice de 100 x 100, il te faudra très longtemps pour l'inverse avec cet algorithme. (en jours et plus...)
De plus, pour des problèmes réels, le résultat sera erroné a cause du principe de la virgule flotante. (Sur ordinateur, les nombres étant stocké de façon échantilionnés avec une perte de précision).
En pratique, pour résoudre un système d'équations linéaire, on n'inverse jamais une matrice.
on utilise plutôt des méthodes comme la décomposition LU et la décomposition QR
On peut aussi utiliser des méthodes comme Gauß Doolittle, Gauß-Jordan O(n^3), Strassen O(n^2.807), Coppersmith-Winograd O(n^2,378), Banachiewicz, ...
Ces méthodes sont beaucoups plus précise et plus rapides même si l'algorithme est plus complexe.