{"cells":[{"metadata":{},"cell_type":"markdown","source":"![En tête general](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/En_tete_general.png)\n\n\n© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
\nLes activités partagées sur Capytale sont sous licence Creative Commons.\n\n Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.\n"},{"metadata":{},"cell_type":"markdown","source":"
\n \n
\n\n

Les moutons

\n

Introduction à l'étude d'une chaîne de Markov

\n

\n"},{"metadata":{},"cell_type":"markdown","source":"### Sommaire\n\n0. Présentation de la situation étudiée et notations
\n1. Graphe probabiliste et première étude algorithmique
\n2. Étude matricielle
\n3. Étude asymptotique
\n4. Complément : Expressions explicites des suites
\n

\n"},{"metadata":{},"cell_type":"markdown","source":"## 0. Présentation de la situation étudiée et notations"},{"metadata":{},"cell_type":"markdown","source":"
\nUn berger, mathématicien et insomniaque de surcroit, rêve chaque nuit de son troupeau de moutons.

\nSon pré est traversé par une barrière, qui sépare initialement son troupeau en deux groupes égaux.\nChaque nuit, 5% des moutons situés à gauche de la barrière sautent à droite et 8% des moutons situés à droite de la barrière sautent à gauche.

\nLa question qui le hante et l'empêche de dormir est de savoir, à long terme, quelle sera la répartition des moutons de part et d'autre de la barrière...\n
\n \n\n\n"},{"metadata":{},"cell_type":"markdown","source":"\nPour tout $n\\in\\mathbb{N}$, on notera $g_n$ et $d_n$ les proportions respectives de moutons, à gauche et à droite, au bout de $n$ nuits. $g_n$ et $d_n$ sont aussi les probabilités, pour un mouton quelconque, de se trouver à gauche et à droite, au bout de $n$ nuits.\n

\nNB : Pour l’étude de cette situation, on suppose que le nombre de moutons est suffisamment important pour pouvoir conserver les valeurs décimales avec une précision arbitraire."},{"metadata":{},"cell_type":"markdown","source":"## 1. Graphe probabiliste et première étude algorithmique"},{"metadata":{},"cell_type":"markdown","source":"
\n Vocabulaire :
\n Le schéma proposé s'appelle un graphe probabiliste, et la situation étudiée est une chaîne de Markov.
\n Les sommets G et D correspondent à \"gauche\" et \"droite\".
\n Les arêtes qui relient les sommets sont pondérées par les probabilités correspondantes.
\n Ainsi, la somme des poids des arêtes issues d'un sommet vaut 1. \n
\n1.1. Compléter le schéma ci-dessous à l'aide des arêtes et pondérations manquantes. \n
\n \n
\n\n"},{"metadata":{},"cell_type":"markdown","source":"1.2. Préciser les valeurs de $g_0$ et $d_0$, et donner une relation liant $g_n$ et $d_n$ pour tout $n\\in\\mathbb{N}$. \n"},{"metadata":{},"cell_type":"markdown","source":"1.3. Écrire deux relations traduisant les mouvements de moutons, d'une nuit à l'autre. \n\n"},{"metadata":{},"cell_type":"markdown","source":"1.4. Tester les syntaxes Python ci-dessous. Que permettent-elles de calculer ? "},{"metadata":{"trusted":false},"cell_type":"code","source":"# Exécuter cette cellule\n\ng,d = 0.5,0.5\n\ng,d = 0.95*a+0.08*b,0.05*a+0.92*b\n\ng,d","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"1.5. Écrire une fonction Python repartition qui reçoit n en argument et renvoie un couple de valeurs correspondant à $g_n$ et $d_n$.

\n$\\quad\\;\\;$Aide : On pourra écrire une boucle et utiliser la syntaxe vue dans la question précédente."},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la fonction repartition\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"1.6. Effectuer un appel à la fonction repartition pour évaluer la répartition des moutons de part et d'autre de la barrière au bout de 4 nuits.

"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici l'appel à la fonction repartition\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2. Étude matricielle"},{"metadata":{},"cell_type":"markdown","source":"
\n Vocabulaire :
\n On dit que $U_n$ est la matrice de distribution au rang $n$.
\n La matrice $A$ s'appelle la matrice de transition associée.\n \n
\n\nAu vu des relations obtenues dans la question 1.3, on dit que les suites $(g_n)_{n\\geq0}$ et $(g_n)_{n\\geq0}$ sont des suites récurrentes imbriquées.
\nPour tout $n\\in\\mathbb{N}$, on pose $U_n=\\begin{pmatrix} g_n & d_n \\end{pmatrix}$.\n\n"},{"metadata":{},"cell_type":"markdown","source":"2.1. Traduire les expressions obtenues en 1.3 sous la forme $U_{n+1}=U_{n}A$, où $A$ est une matrice carrée que l'on précisera.\n\n"},{"metadata":{},"cell_type":"markdown","source":"2.2. Démontrer par récurrence que pour tout $n\\in\\mathbb{N}$, on a $U_n=U_0A^n$. \n\n"},{"metadata":{},"cell_type":"markdown","source":"2.3.a. Tester les syntaxes Python ci-dessous. Que permettent-elles de calculer ?\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Exécuter cette cellule\nimport numpy as np\n\nU_0 = np.matrix([[0.5,0.5]])\n\nA = np.matrix([[0.95,0.05],[0.08,0.92]])\n\nU_0*A**2\n ","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"$\\quad$b. Effectuer une saisie Python pour retrouver, matriciellement, le résultat de la question 1.6."},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici la saisie\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"markdown","source":"$\\quad$c. Écrire une fonction Python U qui reçoit n en argument et renvoie la matrice $U_n$.
$\\quad\\;\\;\\;$Retrouver ensuite le résultat de la question précédente à l'aide d'un appel à cette fonction.
"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la fonction U\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici l'appel à la fonction U\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"$\\quad$d. Effectuer des appels à la fonction U pour déterminer $U_{50}$, $U_{100}$ et $U_{1000}$.
$\\quad\\;\\;\\;$Que peut-on conjecturer, à long terme, concernant la répartition des moutons de part et d'autre de la barrière ?
\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici des appels à la fonction U\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 3. Étude asymptotique"},{"metadata":{},"cell_type":"markdown","source":"
\nVocabulaire :
\nLa matrice $S$ ainsi définie est appelée matrice de distribution invariante
(ou matrice de répartition stable).\n\n
\n\nOn souhaite déterminer une matrice $S = \\begin{pmatrix} x & y \\end{pmatrix}$ telle que :\n\n\n"},{"metadata":{},"cell_type":"markdown","source":"3.1. Démontrer qu'une matrice $S$ vérifie les conditions souhaitées si et seulement si le système $\\begin{Bmatrix} 0,05x & - & 0,08y & = & 0 \\\\ x & + & y & = & 1 \\end{Bmatrix}$ est vérifié.\n\n"},{"metadata":{},"cell_type":"markdown","source":"3.2. En déduire que la matrice $S$ cherchée est unique, et donner ses coefficients ainsi que des valeurs approchées de ces valeurs.
$\\quad\\;\\;$Quelles valeurs semble-t-on retrouver ? Cette matrice dépend-t-elle de la distribution initiale $U_0$ ?
\n\n\n
\nProlongement : (admis)
\nSi $0\nIl existe alors une unique matrice de distribution invariante qui est $ S = \\begin{pmatrix} \\frac{q}{p+q} & \\frac{p}{p+q} \\end{pmatrix}$.
\nDe plus, si on note $U_n$ la matrice de distriubution au rang $n$, alors on a $\\displaystyle\\lim\\limits_{n \\to +\\infty}{U_n}=S$ (cette limite est donc indépendante de l'état initial $U_0$).\n
\n \n
\n
"},{"metadata":{},"cell_type":"markdown","source":"## 4. Complément : Expressions explicites des suites "},{"metadata":{},"cell_type":"markdown","source":"4.1. À l'aide des relations obtenues dans les questions 1.2 et 1.3, donner une expression de $g_{n+1}$ en fonction de $g_n$.\n\n"},{"metadata":{},"cell_type":"markdown","source":"4.2. Pour tout $n\\in\\mathbb{N}$, on pose $\\displaystyle u_n=\\frac{8}{13}-g_n$.
\n$\\quad\\;\\;$a. Démontrer que la suite $(u_n)_{n\\geq0}$ est géométrique.
\n$\\quad\\;\\;$b. En déduire l'expression de $u_n$ en fonction de $n$, puis les expressions de $g_n$ et de $d_n$ en fonction de $n$.
\n$\\quad\\;\\;$c. Écrire des fonctions Python g et d qui reçoivent n en argument et renvoient respectivement les valeurs $g_n$ et $d_n$.
\n$\\quad\\quad\\;\\;$Tester pour $n=4$ et vérifier qu'on retrouve le résultat de la question 1.6.
\n\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici les fonctions a et b\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici les appels aux fonctions\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n$\\quad\\;\\;$d. Déterminer les limites des suites $(g_n)_{n\\geq0}$ et $(d_n)_{n\\geq0}$. Conclure.\n\n"},{"metadata":{},"cell_type":"markdown","source":"![Markov](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/Andrei_Markov.jpg) \n\n
Andreï Markov (1856-1922) a donné son nom à l'étude des chaînes de Markov.
"},{"metadata":{},"cell_type":"markdown","source":"© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
\nLes activités partagées sur Capytale sont sous licence Creative Commons.\n

\nDernière modification de l'activité : Juillet 2022"}],"metadata":{"celltoolbar":"Raw Cell Format","kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}