salut,
je suis pas tout a fait certain de poster le message sur le bon forum (j hesitais avec le forum c++), enfin si c est pas le bon il sera deplace !
J ai donc fait un algorithme de decomposition LU et j observe un drole de truc (à mes yeux en tout cas) :
mon algorithme me sort une matrice triangulaire superieure avant que l algorithme arrive au bout (je veux dire par la avant d avoir fait la multiplication par L associe à la derniere colonne par exemple)
J ai mis mon code, si jamais ca peut :
bon il est fini, je pense notamment stocke L et U dans un tableau de matricepour pouvoir les sortir de la fonction et les manipuler eventuellement apres...enfin ca c est autre chose....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 matrix<float> decomp_lu(matrix<float> m) { matrix<float> l(m.size1(), m.size1()); cout << "dimension de la matrice soumise au LU :"<<m.size1()<<"\n"; for(int i=0; i<=m.size1()-2; i=i+1)//calcul de L { //coef à 0 de la matrice L for(int c=0; c<m.size1(); ++ c) for(int d=0; d<m.size2(); ++ d) l(c,d)=0; //coef à 1 sur la diagonale de la matrice L for(int c=0; c<m.size1(); ++ c) l(c,c)=1; //calcul des coef non nuls de la matrice L for(int j=i; j<=m.size1()-2; ++ j) l(j+1,i)=-m(j+1,i)/m(i,i); cout << "operation numero "<< i <<", L : "<< l <<"\n"; m=prod(l, m); cout << "operation numero "<< i <<", U : "<< m <<"\n"; } return(m); }
Merci, j attend vos remarques !
Partager