π
<-

État stable marche aléatoire

État stable marche aléatoire

Message non lude cpierquet » 26 Fév 2016, 14:56

Hello la communauté, je reviens "à la charge" avec les graphes probabilistes / chaînes de Markov et la recherche de l'éventuel état stable.

Ce matin avec les Spé on a fait un exo de recherche d'état stable en dimension 3 et un des élèves a remarqué que le procédé était assez mécanique, et que d'un point de vue algorithmique cela devait pouvoir se faire.

J'ai donc réfléchi un peu à la manière de précéder pour que cela puisse passer sur une calculatrice, en conservant l'esprit du programme en obtenant l'éventuel état stable par système.

Voilà donc les grandes lignes du procédé :
  1. on détermine la matrice de transition
    $mathjax$M$mathjax$
    carrée d'ordre
    $mathjax$n$mathjax$
    du graphe (qui admet une puissance dont aucun des coefficients n'est nul...)
  2. l'état stable
    $mathjax$\Pi$mathjax$
    vérifiant
    $mathjax$\Pi=\Pi \times M$mathjax$
    donne un système linéaire de
    $mathjax$n$mathjax$
    équations à
    $mathjax$n$mathjax$
    inconnues (en transposant...)
  3. ce système, tel quel, ne peut pas se résoudre car les équations sont "liées"
  4. on retire une équation (la première par exemple) que l'on remplace par celle venant du fait que la somme des coefficients de
    $mathjax$\Pi$mathjax$
    vaut 1
  5. le nouveau système se transforme matriciellement sous forme
    $mathjax$AX=B$mathjax$
  6. la solution du système est donnée par
    $mathjax$X=A^{-1} \times B$mathjax$

Prenons un petit exemple pour comprendre comment "construire" les matrices
$mathjax$A$mathjax$
et
$mathjax$B$mathjax$
:

  • on prend par exemple comme matrice de transition
    $mathjax$M=\begin{pmatrix} 0,1 & 0 & 0,9 \\ 0,9 & 0,1 & 0 \\ 0,3 & 0,1 & 0,6 \end{pmatrix}$mathjax$
  • on vérifie que
    $mathjax$M^2$mathjax$
    ne comporte aucun 0, et donc qu'il existe un état stable
    $mathjax$\Pi=\begin{pmatrix} x & y & z \end{pmatrix}$mathjax$
  • $mathjax$\Pi=\Pi \times M$mathjax$
    donne directement
    $mathjax$\begin{pmatrix} x & y & z \end{pmatrix}=\begin{pmatrix} 0,1x+0,9y+0,3z & 0x+0,1y+0,1z & 0,9x+0y+0,6z \end{pmatrix}$mathjax$
  • soit encore
    $mathjax$\begin{cases}0,1x+0,9y+0,3z=x \\ 0x+0,1y+0,1z=y \\ 0,9x+0y+0,6z=z \end{cases} \Leftrightarrow \begin{cases}-0,9x+0,9y+0,3z=0 \\ 0x-0,9y+0,1z=0 \\ 0,9x+0y-0,4z=0 \end{cases}$mathjax$
  • la matrice associée à ce système est
    $mathjax$\begin{pmatrix} -0,9 & 0,9 & 0,3 \\ 0 & -0,9& 0,1 \\ 0,9 & 0 & -0,4 \end{pmatrix}$mathjax$
    et le lecteur peut vérifier "facilement" qu'elle vaut
    $mathjax$(M-I_3)^\top$mathjax$
  • on remplace la première équation par
    $mathjax$x+y+z=1$mathjax$
    et on obtient
    $mathjax$\begin{cases}x+y+z=1 \\ 0x-0,9y+0,1z=0 \\ 0,9x+0y-0,4z=0 \end{cases}$mathjax$
  • ce nouveau système s'écrit
    $mathjax$AX=B$mathjax$
    avec
    $mathjax$A=\begin{pmatrix} 1 & 1 & 1 \\ 0 & -0,9& 0,1 \\ 0,9 & 0 & -0,4 \end{pmatrix}$mathjax$
    ,
    $mathjax$X=\begin{pmatrix} x \\ y \\ z \end{pmatrix}$mathjax$
    et
    $mathjax$B=\begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix}$mathjax$
  • on fait travailler la calculatrice, et on obtient
    $mathjax$X=A^{-1}B=\begin{pmatrix} \frac27 \\ \frac{1}{14} \\ \frac{9}{14} \end{pmatrix}$mathjax$
    soit
    $mathjax$\Pi=\begin{pmatrix} \dfrac27 & \dfrac{1}{14} & \dfrac{9}{14} \end{pmatrix}$mathjax$

Il restait donc à programmer tout cela, ce n'est pas du tout optimisé, mais cela fonctionne !
Avec la matrice
$mathjax$M$mathjax$
définie coefficient par coefficient, on calcule
$mathjax$A=(M-I_n)^\top$mathjax$
puis on remplace la première ligne par des 1 ; la matrice
$mathjax$B$mathjax$
est quant à elle constituée d'un 1 et de 0 ensuite...
J'ai rajouté un petit test après la saisie d'une ligne pour vérifier une éventuelle erreur (je pense que le test est suffisant d'ailleurs...)

Code: Tout sélectionner
Disp "MATRICE M CARREE ORDRE n"
Input "n=",N
{N,N}→dim([J])
For(I,1,N)
0→S
For(J,1,N)
Input "COEFF DANS [0,1]=",K
K→[J](I,J)
S+K→S
End
If S=1
Then
Disp "LIGNE OK"
Else
Disp "LIGNE PAS OK"
Stop
End
End
Disp "MATRICE M"
Pause [J]
([J]-unité(N))t→[I] (avec t la transposition !)
For(L,1,N)
1→[I](1,L)
End
Disp "SYSTEME AX=B"
Disp "A=",[I]
Pause
{N,1}→dim([H])
1→[H](1,1)
For(L,2,N)
0→[H](L,1)
End
Disp "B=",[H]
Pause
Disp "X="
Pause [I]^(-1])[H]>Frac
Disp "ETAT STABLE="
Disp [I]^(-1)[H]>Frac


Et voilà le déroulé sur TI83CE :
Capturer 1.png
Capturer 2.png
Capturer 3.png
Capturer 4.png
Capturer 5.png
Capturer 6.png
ETSTABLE.gif
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Dernière édition par cpierquet le 26 Fév 2016, 17:48, édité 2 fois.
Avatar de l’utilisateur
cpierquetPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 30.1%
 
Messages: 202
Inscription: 10 Mar 2014, 18:34
Localisation: Chaumont (52)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prof de Maths [Lycée & BTS]

Re: État stable marche aléatoire

Message non lude critor » 26 Fév 2016, 15:05

Félicitations ! :bj:


A un moment j'avais pour projet de compléter le programme GraphMaster pour TI-Nspire avec la saisie d'un état initial et la recherche d'un état stable.

Mais plus la date fatidique du 1er janvier 2018 se rapproche (c'est-à-dire l'entrée en vigueur du mode examen détruisant tout programme non préchargé d'origine dans la calculatrice par le constructeur), moins j'en trouve la motivation.
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 54.5%
 
Messages: 42499
Images: 17341
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: État stable marche aléatoire

Message non lude Bisam » 26 Fév 2016, 15:08

Il y a un problème si les 2 premières lignes de la transposée de M-In sont indépendantes et la 3ème proportionnelle à la seconde. En remplaçant la première, on n'obtient pas une matrice inversible.
Il vaut mieux chercher le noyau de la transposée de M-In puis diviser le vecteur directeur obtenu par la somme de ses coefficients pour le "normaliser".
Pour cela, on peut utiliser la méthode du pivot de Gauss (et la fonction "ref").
C'est un poil plus technique à écrire, cependant.

On peut aussi chercher quelle ligne on peut éliminer... en cherchant si elle est combinaison des autres... mais cela revient à chercher le noyau, donc on n'y gagne rien.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: État stable marche aléatoire

Message non lude cpierquet » 26 Fév 2016, 15:52

Oui, merci Bisam pour les précisions, je n'avais pas aux différentes possibilités de "liaison" des lignes... erf... et pour le coup ce ne sont pas trop les élèves qui auraient pu me lancer sur cette piste...
Je n'avais pas assez réfléchi à ce problème éventuel :?

Du coup niveau TS cela devient difficilement programmable !
Ou alors commencer par remplacer la 1ère ligne, tester l'inversibilité, et tant qu'elle n'est pas inversible on remplace la ligne suivante... faisable je pense...
Avatar de l’utilisateur
cpierquetPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 30.1%
 
Messages: 202
Inscription: 10 Mar 2014, 18:34
Localisation: Chaumont (52)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prof de Maths [Lycée & BTS]

Re: État stable marche aléatoire

Message non lude Bisam » 26 Fév 2016, 16:01

Si le but est de faire programmer les élèves, effectivement, ça risque d'être difficile... mais ça l'était déjà un peu.
On peut "tricher" en testant les lignes 1 par 1, jusqu'à obtenir celle que l'on peut remplacer par une liste de 1 pour avoir une matrice inversible. Il suffit d'expliquer aux élèves que la calculette connait une façon de tester si une matrice est inversible.
Algorithmiquement, c'est un peu moins efficace, mais plus facile à expliquer.

Sinon, tu peux aussi utiliser la méthode dite de "la boîte noire" en leur fournissant un bout de code qui renvoie un vecteur directeur de
$mathjax$\ker\left({}_{}^{t}(M-I_n)\right)$mathjax$
...

Par ailleurs, il faudrait aussi prévoir les cas où M-In est inversible... et où, par conséquent, il n'y a PAS d'état stable.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: État stable marche aléatoire

Message non lude cpierquet » 26 Fév 2016, 16:08

Il y a un problème si les 2 premières lignes de la transposée de M-In sont indépendantes et la 3ème proportionnelle à la seconde. En remplaçant la première, on n'obtient pas une matrice inversible.


Je n'arrive pas - ça doit être le weekend qui approche... - à construire une
$mathjax$M$mathjax$
telle que
$mathjax$(M-I_n)^\top$mathjax$
donne les lignes 1 et 2 indépendantes et la 2 et la 3 proportionnelles...
Avatar de l’utilisateur
cpierquetPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 30.1%
 
Messages: 202
Inscription: 10 Mar 2014, 18:34
Localisation: Chaumont (52)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prof de Maths [Lycée & BTS]

Re: État stable marche aléatoire

Message non lude Bisam » 26 Fév 2016, 16:17

J'ai répondu machinalement, sans me préoccuper du contexte des chaînes de Markov...
Du coup, je ne suis pas certain que l'on puisse effectivement rencontrer ce cas !

Je creuse...
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: État stable marche aléatoire

Message non lude Bisam » 26 Fév 2016, 16:38

Bon, après quelques minutes, il s'avère que le seul cas où cela pourrait survenir serait une matrice de la forme :
$mathjax$M=\begin{pmatrix}1&0&0\\
0&a&1-a\\
0&b&1-b\\
\end{pmatrix}$mathjax$

Mais tu excluais ce cas par ton 1)... et, en plus, dans ce cas, l'état stable n'est pas difficile à trouver !

Finalement, beaucoup de bruit pour rien.
Il faut juste envisager que l'élève puisse utiliser le programme dans ce cas aussi... ou, pire, dans le cas suivant :
$mathjax$M=\begin{pmatrix}0&1&0\\
0&0&1\\
1&0&0\\
\end{pmatrix}$mathjax$
.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: État stable marche aléatoire

Message non lude cpierquet » 26 Fév 2016, 17:07

Merci pour la précision !

Par contre, je précise bien que j'utilise l'algorithme dans le cas où on a une puissance de M qui ne comporte aucun zéro, donc dans le cas
$mathjax$M=\begin{pmatrix}0&1&0\\ 1&0&0\\ 0&0&1\\ \end{pmatrix}$mathjax$
on "passe"...

Pour poursuivre quand même avec les éventuels cas particuliers, est-il possible de tomber dans un cas de lignes liées en dimension 4 (ou +) de telle sorte que ce ne soit pas la première qu'il faille remplacer ? J'avais fait un exemple de marche aléatoire avec mes élèves qui simulait un lancer de ballon entre eux 6 de manière "programmée", et le remplacement de la 1ère ligne marchait :)

Et puis sinon je n'ai pas demandé aux élèves de faire le programme, mais je leur ai montré le principe ;-) ils sont un peu curieux !!
Avatar de l’utilisateur
cpierquetPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 30.1%
 
Messages: 202
Inscription: 10 Mar 2014, 18:34
Localisation: Chaumont (52)
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: Prof de Maths [Lycée & BTS]

Re: État stable marche aléatoire

Message non lude Bisam » 26 Fév 2016, 17:17

Je pense que le calcul que j'ai effectué (sur ma feuille) prouve que le remplacement de la 1ère ligne ne marche pas seulement dans le cas où la 1ère colonne de M est un 1 suivi de plein de 0 (et du coup, la 1ère ligne aussi).
Cela est dû au fait que les coefficients sont entre 0 et 1... Je te laisse t'en convaincre.

Au fait, ton test sur S et P ne suffit pas pour contenir les coefficients entre 0 et 1 :
Contre-exemples : (2, -1/2, -1/2), ou encore (2, 0, -1) ou (1,1,1,-1,-1) passent le test...
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Suivante

Retourner vers TI-Basic

Qui est en ligne

Utilisateurs parcourant ce forum: ClaudeBot [spider] et 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Ndless for CX 4.5.5 / CX II 6.2.0
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
3494 utilisateurs:
>3482 invités
>6 membres
>6 robots
Record simultané (sur 6 mois):
32248 utilisateurs (le 01/09/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)