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 : 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);
}
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 !