J'ai effectué des tests sur la décomposition d'une matrice A (carrée) en un produit de deux matrices triangulaires L et U. L est la matrice inférieure et U, la supérieure.
J'ai utilisé un algorithme trouvé dans l'excellent livre "Algèbre linéaire" de Grégoire Allaire et le programme a l'air de bien fonctionner.
J'ai essayé sur l'exemple suivant :
$$
A = \left[\begin{array}{ccc}
1 & 2 & 3 \\
4 & 5 & 1 \\
1.3 & 0 & 8
\end{array}\right]$$
Avec mon programme j'obtiens :
$$
L = \left[\begin{array}{ccc}
1 & 0 & 0 \\
4 & 1 & 0 \\
1.3 & 0.8667 & 1
\end{array}\right]$$
$$
U = \left[\begin{array}{ccc}
1 & 2 & 3 \\
0 & -3 & -11 \\
0 & 0 & 13.63
\end{array}\right]$$
Par contre, dans Scilab, avec l'instruction [Lp,Up] = lu(A) j'obtiens :
$$Lp = \left[\begin{array}{ccc}
0.25 & -0.4615385 & 1\\
1 & 0 & 0\\
0.325 & 1 & 0
\end{array}\right]$$
$$Up = \left[\begin{array}{ccc}
4 & 5 & 1\\
0 & -1.625 & 7.675\\
0 & 0 & 6.2923077
\end{array}\right]$$
Dans les deux cas, j'ai bien $\displaystyle L.U = L_{p}.U_{p} = A$, mais pourquoi Scilab me donne des matrices qui ne sont pas triangulaires ?!
NB :
Effectivement, merci !rebouxo a écrit :Y a une petite coquille dans ton texte. Tes matrices sont triangulaires et pas diagonales.