Forum Casio - Vos tutoriels et astuces


Index du Forum » Vos tutoriels et astuces » [Algèbre] Diagonalisation des matrices
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message

[Algèbre] Diagonalisation des matrices

Posté le 22/03/2014 17:29

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


Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message

Citer : Posté le 22/03/2014 17:34 | #


Bon, je précise:
si vous ne comprenez rien, c'est normal! (je dis ça pour Eltoredo surtout... )

Mais bon ça peut éventuellement rendre service aux Maths Spé, et à moi par la même occasion!
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
BtlHors ligneAncien modérateurPoints: 3879 Défis: 107 Message

Citer : Posté le 22/03/2014 17:41 | #


Je devais diagonaliser une matrice dans une interro la semaine passée...
Et...Je me suis trompé dans le déterminant... :stupid:

oui je voulais me pendre
Un excellent tuto video qui vous explique comment transférer des fichiers de l'ordinateur vers la calculatrice et vice versa ma chaine youtube
mes jeux
mes jeux

Jouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games

Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
LephenixnoirEn ligneAdministrateurPoints: 14121 Défis: 136 Message

Citer : Posté le 22/03/2014 17:42 | #


Argh, tu m'as perdu !
Je n'ai plus le niveau là

Mias bravo quand même, il a l'air sacrément bien foutu
Je le testerai si j'arrive à retransférer quoi que ce soit vers ma calculatrice.
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message

Citer : Posté le 22/03/2014 17:42 | #


En même temps... La réduction c'est que du calcul c'est pas hyper passionnant...

Ajouté le 22/03/2014 à 17:44 :
Merci Lephenixnoir
(je sens qu'il va me trouver un bug au bout d'une minute... )
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
LephenixnoirEn ligneAdministrateurPoints: 14121 Défis: 136 Message

Citer : Posté le 22/03/2014 17:47 | #


Désolé, il n'y a pas le moindre risque
Si seulement on pouvait faire ça plutôt que des statistiques/probabilités en cours
Ça me met en rage rien que d'y penser, que toi tu t'éclates à faire ça pendant que moi je m'emmerde devant mes variables aléatoires
...
Ne0tuxHors ligneMembre d'honneurPoints: 3246 Défis: 261 Message

Citer : Posté le 22/03/2014 19:03 | #


@Alex_1186 : excellente initiative ! Pourquoi ne pas pousser le concept un peu plus loin et proposer un outil dans la section utilitaires ?

Pour ma part je pense que non seulement ça va me permettre de vérifier mes résultats, mais ça me servira sans aucun doute également pour les calculs d'hyperstaticité en SI, lorsque il faut déterminer le rang cinématique d'un système de 24 équations (ce qui m'est arrivé en épreuve orale il y a moins d'une semaine).
Quitte à diagonaliser, pourquoi ne pas donner la dimension des sous-espaces propres, ainsi que les vecteurs propres ? Les valeurs propres étant connues, avec la trace et le déterminant on peut dans un certain nombre de cas faire ces calculs sans trop de difficulté non ?

Super d'avoir partagé ça avec nous en tout cas.

@BTL : la diagonalisation c'est has-been, maintenant on trigonalise (véridique !) !

@Lephenixnoir : au contraire, si tu t’ennuies, profite en pour faire comme Alex' et développer des outils pour tes variables aléatoires et nous faire l'honneur de les partager avec nous !
Mes principaux jeux : Ice Slider - CloneLab - Arkenstone

La Planète Casio est accueillante : n'hésite pas à t'inscrire pour laisser un message ou partager tes créations !
LephenixnoirEn ligneAdministrateurPoints: 14121 Défis: 136 Message

Citer : Posté le 22/03/2014 19:09 | #


@Ne0tux
J'ai fait pas mal de programmes de maths (formes de polynômes du 2nd degré, résolution pas à pas, cours complets...) mais je n'arrive vraiment pas à les organiser.
Je pense que je vais les compiler en un grand add-in pour réunir tous les cours que j'aurai notés.
Néanmoins j'ai déjà énormément de boulot (3 projets en add-in particulièrement, plus la partage de graphismes en web), et je ne suis pas sûr de pouvoir tout gérer à la fois.

Mais bon, je vais essayer, après tout on ne sait jamais.
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message

Citer : Posté le 23/03/2014 10:58 | #


Merci Ne0!

Bon par contre faut que je vous prévienne de quelques trucs...

Déjà la complexité des fonctions est cubique! (je pense, en tout cas ça rame vite) Donc évitez les matrices 100*100...
J'ai eu des tonnes de bugs, et je ne suis toujours pas sûr que ça marche! D'autant que mon utilisation de la matrice échelonnée est tout de même assez empirique...
Je vous conseille fortement d'essayer sur des exemples connus avant de s'en servir pour de vrai!!!!!
Si vous tombez sur un résultat incohérent, dites-le moi!

Une erreur que j'ai rencontré: la fonction SolveN est perfectible, si les racines sont trop éloignées, genre {1.1;1.01;358000}, elle en oublie parfois! Donc ça peut bugger parfois, je me décharge de toute responsabilité!

@Ne0: Tu sais j'ai fait ça vite fait, mais si toi (ou quelqu'un d'autre) veut reprendre le code et faire un bon truc je l'y autorise sans problème!
Pour les dimensions des espaces propres, si c'est diagonalisable il suffit de lire le nombre de valeurs propres associées dans la matrice diagonale, mais tu as raison, si ça ne l'est pas c'est bête de s'en priver... Comme le spectre d'ailleurs...
Je vais changer ça dés que j'ai un moment.

Par contre les vecteurs propres je ne vois pas trop comment les obtenir, à part en résolvant des systèmes... (Brrr!)

Si tu dois calculer le rang d'une matrice (24*24! ) fais Ref Mat *** puis compte le nombre de lignes nulles!
ça a l'air de marcher! ça donne la dimension du noyau, hop n-ça et tu as le rang!
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
Alex BasicCHors ligneAncien modérateurPoints: 1734 Défis: 83 Message

Citer : Posté le 24/03/2014 17:00 | #


J'ai un DS de math sur quels chapitres à ton avis vendredi ?
J'ai presque tout compris, sauf que l'on n'a pas fait la seconde partie du cours sur les matrices qui porte sur les déterminants et la diagonalisation.
Du coup je le regarde dans deux semaines
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message

Citer : Posté le 25/03/2014 20:10 | #


Oui la réduction on fait ça en spé!
Mais Lolo arrive toujours à nous caser des vecteurs propres et des valeurs propres dans ses sujets!

(je précise pour les autres gens: il a mon prof de l'année dernière, et son nom n'est pas réellement Lolo...)
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
Alex_1186Hors ligneMembrePoints: 1215 Défis: 46 Message

Citer : Posté le 26/03/2014 16:47 | # | Fichier joint


Je mets à jour les programmes.
Les anciens en Pièce-jointe! (les nouveaux dans le message principal!)

Petit problème apparemment réglé avec le rang des matrices et la dimension des noyaux.
Ajout du rang de la matrice si elle n'est pas inversible, ainsi que son déterminant.
Affichage des dimensions des sous-espaces propres à côté de leurs valeurs propres respectives.

A noter que la fonction SolveN bug pas mal si le programme est trop long (erreur mémoire pour moi...).

Programmes à utiliser avec précaution car je ne suis pas sûr du résultat!
(et avec les approximations numériques on est jamais sûr de toute façon...)
Projets que je soutiens
Projets que je soutiens
Robscape 2 de Ray
Les tests vidéo de Marmotti
Mes projets
Mes projets
Une dizaine de projets top secrets...

Timeless Remix Airwolf
"And the dream will never die..."
PurobazHors ligneMembre d'honneurPoints: 2690 Défis: 110 Message

Citer : Posté le 03/05/2014 12:47 | #


Le classpad a des fonctions pour calculer les valeurs propres et les vecteurs propres.
I'll be back !
pour plus de fun
mes programmes fun
de technique
mes projets
et de Swag
les projets que je soutiens
Dark stormHors ligneMembre d'honneurPoints: 10765 Défis: 174 Message

Citer : Posté le 12/02/2016 20:42 | #


Up, je vais essayer de modifier le programme pour donner les vecteurs propres et ainsi les matrices de passage.
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Páranÿe quetë Quendya
RemiwebHors ligneMembre de CreativeCalcPoints: 1040 Défis: 32 Message

Citer : Posté le 29/02/2016 20:33 | #


Up aussi alors, ça peut être utile et je suis curieux de voir comme tu t'y prends
Tweaks : ||||| ||||
lololo
Statut : Invité

Citer : Posté le 24/03/2019 09:57 | #


Je n'arrive pas a lire ton ficher. Comment faut-il l'ouvrir? Merci
LephenixnoirEn ligneAdministrateurPoints: 14121 Défis: 136 Message

Citer : Posté le 24/03/2019 10:09 | #


Il faut l'importer dans la section "Mémoire principale" de FA-124. Si tu as une calculatrice avec mémoire de stockage, tu peux aussi l'envoyer là puis le copier dans la mémoire principale de la calculatrice à l'aide la fonction COPY (F2) de l'application MEMORY.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2019 | Il y a 48 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd