"Sylvain Croussette" a écrit dans
le message de news:
obh1i0t42afhr49v659blm6blrlkubsj2k@4ax.com...
[color=green]
> >> La théorie: on peut écrire toute matrice n x n en 4 parties comme
> ceci:
> A= (a11 w)
> ( v A')
> où a11 est le premier élément,
> w est un vecteur ligne de dimension n-1,
> v est un vecteur colonne de dim n-1,
> et A' est une sous-matrice (n-1)x(n-1).
>
> Si elle est non singulière, on peut la factoriser ainsi:
> A= (1 0 ) (a11 w )
> (v/a11 Id) (0 A'-v*w/a11)
> où les 0 sont des vecteurs ligne(matrice 1) et colonne(matrice 2) de
> dim n-1,
> v/a11 est toujours le vecteur colonne de dim n-1,
> Id est la matrice identité de (n-1)x(n-1),
> et v*w/a11 est le produit extérieur. Le résultat de A'-v*w/a11 est
> donc une sous-matrice de dim (n-1)x(n-1).
>
> On peut vérifier que le produit de ces deux matrices donne bien A.
>
> Ensuite on continue recursivement pour la sous-matrice A'-v*w/a11.
> Fin de la théorie.
> *****
> Exemple avec une matrice 4x4:
>
> ( 2 3 1 5 )
> ( 6 13 5 19 )
> ( 2 19 10 23 )
> ( 4 10 11 31 )
>
> a- Traiter la ligne 1 et colonne 1:
> 1-L'élément pivot est [1,1] donc 2. Diviser les éléments de la[/color]
colonne
> 1 qui sont sous le pivot par 2:
> ( 2 3 1 5 )
> ( 3 13 5 19 )
> ( 1 19 10 23 )
> ( 2 10 11 31 )
>
> La sous-matrice 3x3 est formée des éléments qui se trouvent sous la
> ligne en traitement et à droite de la colonne en traitement c'est la
> sous-matrice
>
> 13 5 19
> 19 10 23
> 10 11 31
>
> 2- pour chaque élément de cette sous-matrice 3x3 faire
> element-colonne1*ligne1:
> 13-3*3=4
> 5-3*1=2
> 19-3*5=4
> 19-1*3=16
> 10-1*1=9
> 23-1*5=18
> 10-2*3=4
> 11-2*1=9
> 31-2*5=21
> Résultat:
> ( 2 3 1 5 )
> ( 3 4 2 4 )
> ( 1 16 9 18 )
> ( 2 4 9 21 )
>
> Ensuite on fait la meme chose pour la ligne 2, colonne 2:
> 1-L'élément pivot est [2,2] donc 4. Diviser les éléments de lacolonne
> 2 qui sont sous le pivot par 4:
> ( 2 3 1 5 )
> ( 3 4 2 4 )
> ( 1 4 9 18 )
> ( 2 1 9 21 )
>
> la sous-matrice est maintenant formée des éléments à droite de la
> colonne 2 et sous la ligne 2:
> 9 18
> 9 21
> 2- pour chaque élément de cette sous-matrice 2x2 faire
> élément-colonne2*ligne2:
> 9-4*2=1
> 18-4*4=2
> 9-1*2=7
> 21-1*4=17
> Résultat:
> ( 2 3 1 5 )
> ( 3 4 2 4 )
> ( 1 4 1 2 )
> ( 2 1 7 17 )
>
> Ensuite on fait la meme chose pour la ligne 3, colonne 3:
> 1-L'élément pivot est [3,3] donc 1. Diviser les éléments de lacolonne
> 3 qui sont sous le pivot par 1, la matrice est inchangée.
>
> La sous-matrice est simplement l'élément 17, donc faire element
> -ligne3*colonne3: 17-7*2=3
> Résultat:
> ( 2 3 1 5 )
> ( 3 4 2 4 )
> ( 1 4 1 2 )
> ( 2 1 7 3 )
>
> Cette représentation est la forme compacte, on la sépare en L et Uen
> placant les éléments au-dessus de la diagonale principale (y compris
> cette diagonale) dans U:
>
> ( 2 3 1 5 )
> ( 0 4 2 4 )
> ( 0 0 1 2 )
> ( 0 0 0 3 )
> et les éléments sous la diagonale principale dans L, avec des 1 sursa
> diagonale:
> ( 1 0 0 0 )
> ( 3 1 0 0 )
> ( 1 4 1 0 )
> ( 2 1 7 1 )
>
> Ca c'est sans faire de pivot, mais avec pivot ce ne serait pas
> beaucoup plus difficile.
>
> Cette version s'appelle algorithme de Dolittle. Il y a aussi
> l'algorithme de Crout, c'est la meme chose sauf que ce sont les
> éléments de la ligne qui sont divisés par le pivot et non ceux de la
> colonne en traitement, et c'est la matrice U qui contient des 1 sursa
> diagonale principale.
>Bon on va aller digerer ca, merci beaucoup.