|
Tutoriel rédigé le : 2014-04-30 20:47 par Alex_1186 Catégorie : Basic Casio Calculatrice : Toutes
Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (19 commentaires) Diagonalisation des matrices A la veille de mes concours de fin de prépa, je me suis rappelé que personne à ma connaissance n'avait réussi à diagonaliser des matrices avec la calculette, alors, après avoir abandonné puis recommencé puis à nouveau abandonné j'ai relevé le défi!
Donc voilà, les programmes sont en fichier joint!
- DIAGO Diagonalise la matrice si cela est possible
- EGALMAT Renvoie le booléen, "Mat A=Mat B" (peut être utile!)
- COMTRIX Renvoie la comatrice et l'inverse de la matrice
ATTENTION: Programmes à utiliser avec PRÉCAUTIONS, je ne garantis pas la justesse des résultats dans tous les cas!
Programmes auxiliaires:
- NB ZERO Compte le nombre de lignes nulles dans la matrice échelonnée, ce qui correspond à Dim Ker M
- D2 programme auxiliaire pour éviter les bugs de SolveN
Maintenant quelques explications!
Vous savez tous qu'une matrice de Mn,p (lR) représente une application linéaire de lR^p dans lR^n.
Ici on s'intéresse au cas n*n, c'est-à-dire les matrices de Mn(lR) représentant les endomorphismes de lR^n.
On définit le spectre d'une matrice M par:
Sp(M)={ λ∈lR,∃X∈Mn,1(lR), MX = λX }
Les λ sont les valeurs propres associées aux vecteurs propres X (on identifie matrice colonne et vecteur).
Pour déterminer le spectre, j'utilise la fonction SolveN, appliquée à Det:
SolveN ( Det (Mat M - X Mat I, X))
En réduction, on définit le polynôme caractéristique de M par:
XM=det( M - λ*I )
où I est la matrice identité d'ordre n.
XM est un polynôme en λ, et le spectre est inclus dans l'ensemble des racines de XM!
On dit qu'une matrice est diagonalisable si et seulement si elle est semblable à une matrice diagonale.
C'est-à-dire qu'il existe une base de lR^n constituée de vecteurs propres de M.
La caractérisation dont je me sers:
M est diagonalisable si et seulement si:
n = ∑(λ∈Sp(M)) Dim Eλ
où les Eλ sont les sous-espaces propres associés aux valeurs propres λ.
De plus, j'utilise la fonction Ref (inconnue au bataillon depuis des lustres).
En fait, elle donne la matrice échelonnée, la "Row Echelon Form" (et Rref la "Row Reduced Echelon Form"), cf Wikipédia pour plus d'informations.
Bref, le résultat dont je me sers est le suivant:
le rang de la matrice M est égal au nombre de lignes non nulles de la matrice échelonnée.
Or, par théorème du rang, Dim Ker Eλ = n - rg (M-λI).
Donc: pour obtenir la dimension de chaque sous-espace propre, je compte simplement le nombre de lignes nulles dans la matrice échelonnée de M.
Si la somme des dimensions est égale à n, c'est diagonalisable, je renvoie la matrice diagonale avec les ω(λ) valeurs propres placées sur la diagonales.
( ω(λ) est l'ordre de multiplicité de λ en tant que racine de XM, qui est égal à la dimension de Eλ dans le cas diagonalisable )
Voilà!
Si quelqu'un trouve une erreur quelconque, un contre-exemple ou carrément une erreur théorique grave dans mes programmes, qu'il m'en fasse part.
Sur ce, bonne diagonalisation à tous!
En bonus: le programme qui donne la comatrice et inverse la matrice si possible!
Fichier joint
Discutez de ce tutoriel sur le forum >> Voir le sujet dédié (19 commentaires)
|
|