Factorisation PLU

Bonjour

Si $A$ est une matrice inversible, alors on peut trouver un triplet $(P,L, U)$ tel que $A=PLU$, avec $P$ une matrice de permutation, $L$ triangulaire inférieure unitaire et $U$ triangulaire supérieure inversible. Donc on a une factorisation $PLU$.
Comme par exemple : $$ \begin{pmatrix} 1& 2 \\ 3 & 4 \end{pmatrix}=\begin{pmatrix} 1& 0 \\ 0 & 1 \end{pmatrix}\begin{pmatrix} 1&0 \\ 3 & 1 \end{pmatrix}\begin{pmatrix} 1& 2 \\ 0 & -2 \end{pmatrix}.$$ Je veux écrire un algorithme en matlab de cette factorisation.
function [  C ] = my_matrix_mult( A,P,L,U )
[n,n]=size(A)=size(P)=size(L)=size(U);
G := Dom::Matrix(Dom::Real)(A);
[L, U, pivlist] := linalg::factorLU(G);
Mais la factorisation de cet algorithme nous donne deux matrices au lieu de trois, le cas ici.
Merci de vos aides.

Réponses

  • En regardant 3 secondes l'aide de matlab [L,U,P] = lu(A)
  • Bonjour,
    avec Matlab, lu (A) ne me donne pas la factorisation. Par exemple pour la matrice $A=\begin{pmatrix} 2& 4&4 \\ 1 &3 &1\\1&5&6\end{pmatrix}$ lu(A) me donne pas la décomposition de 3 matrices mais plutôt une seule : $A=\begin{pmatrix} 2& 4&4 \\ 0.5 &3 &4\\0.5&-0.33&-2.33\end{pmatrix}$ .
    Normalement $A$ devrait se décomposer comme suit $$
    A=\begin{pmatrix} 1& 0&0 \\[-3pt] \tfrac{1}{2} &1 &0\\[-2pt] \tfrac{1}{2}&0&1\end{pmatrix} \begin{pmatrix} 2& 4&4 \\ 1 &3 &1\\1&5&6\end{pmatrix}\begin{pmatrix} 2& 4&4 \\ 0 &1 &-1\\0&0&7\end{pmatrix}.$$
  • Tu n'as pas bien lu le message de Héhéhé, témoin le calcul ci-dessous.
    >> A = [2,4,4;1,3,1;1,5,6]      
    
    A =
    
         2     4     4
         1     3     1
         1     5     6
    
    >> lu(A)
    
    ans =
    
        2.0000    4.0000    4.0000
        0.5000    3.0000    4.0000
        0.5000    0.3333   -2.3333
    
    >> [P,L,U] = lu(A)
    
    P =
    
        1.0000         0         0
        0.5000    1.0000         0
        0.5000    0.3333    1.0000
    
    
    L =
    
        2.0000    4.0000    4.0000
             0    3.0000    4.0000
             0         0   -2.3333
    
    
    U =
    
         1     0     0
         0     0     1
         0     1     0
    
    >> U*P*L-A
    
    ans =
    
         0     0     0
         0     0     0
         0     0     0
    
    Edit : j'ai mis les lettres dans le mauvais ordre, $U$ est la matrice de permutation, etc. Voir les messages de Héhéhé ci-dessus et Rescassol ci-desous.
  • Bonjour,

    Et si tu faisais:
    [L,U,P]=lu(A)
    

    Cordialement,

    Rescassol
Connectez-vous ou Inscrivez-vous pour répondre.