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.
Merci de vos aides.
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.
Bonjour!
Catégories
- 163.2K Toutes les catégories
- 9 Collège/Lycée
- 21.9K Algèbre
- 37.1K Analyse
- 6.2K Arithmétique
- 53 Catégories et structures
- 1K Combinatoire et Graphes
- 11 Sciences des données
- 5K Concours et Examens
- 11 CultureMath
- 47 Enseignement à distance
- 2.9K Fondements et Logique
- 10.3K Géométrie
- 65 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 68 Informatique théorique
- 3.8K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 314 Mathématiques et Physique
- 4.9K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10K Probabilités, théorie de la mesure
- 773 Shtam
- 4.2K Statistiques
- 3.7K Topologie
- 1.4K Vie du Forum et de ses membres