next up previous contents
Next: Diagonalisation (algorithme de Laguerre-Souriau-Faddeev). Up: Réduction et diagonalisation des Previous: Réduction et diagonalisation des

Réduction des matrices par l'algorithme du pivot partiel.

  Pour réduire une matrice, entrez la matrice sur le niveau 1 de la pile (si la matrice ne contient pas de paramètres, vous pouvez utiliser MatrixWriter, sinon il faut rentrer une liste de listes, en d'autres termes remplacer les crochets [] par des accolades {}) puis lancez le programme RED.

Vous avez alors le choix entre RED qui crée des 0 de part et d'autre de la diagonale ou RANG qui crée des 0 sous la diagonale. Attention: le programme considère que la dernière colonne est une colonne de constantes (2ème membre d'un système par exemple), et ne crée pas de 0 dans cette colonne. Si nécessaire, ajoutez une colonne de zéros!

Si le flag 1 est armé, les étapes intermédiaires de la réduction sont affichées, l'utilisateur doit appuyer sur CONT (la touche-menu en haut à droite) à chaque étape. Il peut également interrompre la réduction en tapant HALT par exemple pour visualiser complètement une grande matrice. La reprise du programme s'effectue alors par tex2html_wrap1831 (la touche en bas du clavier).

Le pivot choisi est l'élément du reste de la colonne dont le module est maximal. Par convention:

En mode symbolique (flag 15 armé), on limite ainsi les cas particuliers et on facilite leur résolution, alors qu'en mode numérique on minimise les erreurs d'arrondi (meilleure stabilité).

A la fin de la réduction, vous voyez au niveau 2 la liste des pivots. Chaque fois qu'un pivot de type symbolique s'annule, il faut reprendre la réduction dans ce cas particulier. Si vous savez résoudre l'équation pivot=0, rappelez la matrice originale sur la pile (tapez MATRIX) puis tapez une équation du type '<parametre>=valeur' puis L2S (ou tex2html_wrap_inline1393 -shift droit- tex2html_wrap1741 en mode User) et enfin à nouveau RED.

Par exemple, supposons que l'on résolve le système:

displaymath1743

Pour tex2html_wrap_inline1761 et tex2html_wrap_inline1763 , il y a une solution unique obtenue en tapant
{ {M 1 -2} { M 'M-1' 2 } }
puis RED RED qui donne au niveau 1:
{ { '-M^2+2*M' 0 '2*M' } { 0 '2-M' -4 } }.
C'est-à-dire que:

displaymath1744

Au niveau 2 de la pile se trouvent la liste des pivots. Le pivot 'M^2+-2*M' s'annule lorsque m=2 et m=0 et on s'aperçoit qu'il n'y a pas d'autres cas particuliers. Pour réduire le système lorsque m=0 par exemple, rappelez la matrice au niveau 1 (en tapant MATRIX), puis tapez 'M=0' suivi de L2S (ou tex2html_wrap_inline1393 -shift- tex2html_wrap1741 en mode user) puis relancez RED RED (on obtient ainsi x quelconque et y=-2). Pour le cas m=2, recommencez la même opération.

A noter que les sous-programmes SYST et SOLGEN sont prévus spécialement pour résoudre les systèmes linéaires. Au niveau 1 de la pile vous rajoutez la liste des variables et le coefficient multiplicateur de la colonne des coefficients constants (-1 si les coefficients constants sont à droite du signe ``=", 1 sinon). Vous obtenez alors les inconnues principales en fonction des inconnues auxiliaires et les équations de compatibilité sur les paramètres (attention, les inconnues auxiliaires peuvent ne pas apparaître dans l'expression des inconnues principales, mais la liste des inconnues au niveau 3 est ordonnée de la façon suivante: inconnues principales, inconnues auxiliaires, la coupure est faite par le terme 1 ou -1 s'il y a des termes constant sinon il faut comparer avec la liste originale). Par exemple, pour le système ci-dessus, le niveau 1 doit contenir {X Y -1} et le niveau 2 la matrice
{ {M 1 -2} {M 'M-1' 2} }
On obtient alors la solution unique du cas général:
{ :'X': '2/(-M+2)' :'Y': '4/(M+-2)' }
Ici, il n'y a pas d'inconnues auxiliaires (le niveau 2 contient { X Y -1} identique au niveau 3). Les cas particuliers sont au niveau 2. Pour m=0, on reprend la liste de variables et la matrice de départ (tapez MATRIX puis tex2html_wrap1741 (non-shifté car il s'agit de décomposer la liste du niveau 1 en 2 listes) puis tex2html_wrap1839 (pour SWAP) puis 'M=0' L2S et encore tex2html_wrap1839 ), ce qui donne:

2: { { 0 1 -2} { 0 -1 2 } }
1: { X Y Z -1}
on tape enfin RED puis SYST et on obtient la solution générale:
{ :'Y': -2 }
donc les deux équations sont compatibles et y=-2. De plus au niveau 2, la liste des variables est {Y -1 X} donc x est une inconnue auxiliaire (en d'autres termes x est quelconque). En général les inconnues auxiliaires apparaissent dans l'expression des inconnues principales (ce n'est pas le cas ici). Pour m=2, on obtient:
{ :'X': '-1-1/2*Y' :-1: 0 }
donc les équations sont incompatibles car tex2html_wrap_inline1793 .

Vous pouvez aussi obtenir une représentation paramétrique de l'espace des solutions d'un système en tapant SOLGEN au lieu de SYST. Le niveau 1 contient alors la solution générale et les équations de compatibilité. Sur l'exemple précédent (m=0), on obtient ainsi au niveau 1:
If { }, { X Y }=: { X -2 }

L'option INVL de RED permet d'inverser une matrice carrée placée au niveau 1 de la pile. Son intérêt est d'inverser des matrices avec paramètres, fractions et racines carrées (à condition qu'il n'y ait pas trop de paramètres, sinon les calculs seront pénibles et longs),

Enfin, l'option DET de RED calcule le déterminant d'une matrice carrée par réduction. Ce qui permet parfois d'obtenir le déterminant sous forme factorisée, contrairement au programme DET qui renvoie toujours un résultat non factorisé. Vous pouvez naturellement poursuivre la factorisation en tapant COLC. Notez que le résutat peut avoir un dénominateur, dans ce cas utilisez EXPA pour le supprimer (parfois on peut aussi utiliser COLC suivi de COLCT).

Schémas de pile des programmes appelés par RED

tabular458

Quelques exemples d'utilisation:

  rem504


next up previous contents
Next: Diagonalisation (algorithme de Laguerre-Souriau-Faddeev). Up: Réduction et diagonalisation des Previous: Réduction et diagonalisation des