re-bonjour,

Je suis tout débutant en scilab et il faut que je rende un projet où il s´agit de la chose suivante:

Il faut écrire une fonction Cramer(A,b) pour résoudre numériquement le système d´équations Ax = b. Bon en fait il s´agit de prouver que la méthode de Cramer est tout à fait inadaptée pour ce genre de calculs car beaucoup trop dépenssière en ressources. Un exemple d´un bouquin: pour résoudre un système á 50 équations, il faudrait un temps de l´ordre de 1049 années sur un ordi normal.

J´ai écrit mon programme, et moi mon problème... c´est qu´il est trop rapide!!! Donc je prouve le contraire de ce que j´aurais à prouver. Y a plusieurs possibilités:

- Mon PC calcul á la vitesse de la lumière
- J´ai trouvé un algorithme fulgurant auquel personne n´avait pensé
- Mon truc est faux.

Je vous soumet l´algorithme que j´ai écrit en vous épargnant les détails préliminaires du genre vérification de la compatibilité de la matrice A et du vecteur colonne b. En fait c´est tout simple:

--------
StartCramer = timer()

//création du vecteur colonne x, de même dimension que b
x=b

//création de la matrice M et calcul de son déterminant

for k = 1:nb
M = A
M(:,k) = b
x(k,1) = det(M) / DA
end

StopCramer = timer()
CramerTimer = StopCramer - StartCramer
-----------------


Pour tester mon truc, je fais simplement dans la fenêtre scilab, avec différentes valeurs de n:
A = rand(n,n)
b = rand(n,1)
x = Cramer(A,b)

Je me suis demandé s´il n´y a pas un problème d´arrondis quelquepart, que mon scilab arrondi trop. Car je vérifie de la façon suivante:
y = A*x - b
Je n´ai pas forcément des 0 partout, mais ça tourne autour de 10-15.

Quelqu´un a-t-il une idée?

Merci d´avance

Christophe