[decomposition LU] resultat bon avant la fin de l algorithme ?
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 :
Code:
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);
} |
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....
Merci, j attend vos remarques !