Bonjour,
J'essaye d'écrire un algorithme calculant le produit de deux matrices. Je pensais que ma fonction marchait (et j'ai même comparé avec des fonctions trouvées sur le net!), mais elle me renvoie un résultat erroné.
Je n'arrive pas du tout à trouver le problème, si quelqu'un peut m'aider, ou me donner quelques indications svp.
--
Les matrices sont pour cette fonction représentées par le type int vect vect
par exemple [| [|1;2|];[|0;0|] |] représente la matrice
Voici mon programme :
(*produit matricielle v2*v1 *)
let prod v1 v2 =
let n=vect_length v1 in (*n=nombre de ligne de v1=nombre de colonne de v2*)
let l=vect_length v2 in (*l=nombre de ligne de v2*)
let c=vect_length v1.(0) in (*c=nombre de colonne de v1*)
let m=make_vect l (make_vect c 0) in (*m est la matrice nulle à l ligne et c colonne*)
for i= 0 to (l-1) do
for j= 0 to (c-1) do
for k=0 to (n-1) do
m.(i).(j)<- (m.(i).(j) + v2.(i).(k)*v1.(k).(j))
done;
done;
done;
m;;
Lorsque j'essaie cette fonction pour calculer [| [|1;2|]; [|0;0|] |] x [| [|1;1|];[|1;1|] |]
elle me renvoie [| [|3;3|];[|3;3|] |] au lieu de [| [|3;3|];[|0;0|] |] !!!
Du coup je ne trouve pas mon erreur, j'ai pourtant cherché, et j'ai même comparé avec d'autres programmes sur le net, mais je n'y arrive pas..
Si quelqu'un peut m'aider svp
Je vous remercie d'avance pour vos réponses