La ruine relue avec des matrices
Toute la marche du joueur tient dans un tableau de nombres, et élever ce tableau à la puissance n, c'est jouer n coups d'un seul geste.
Le DM3 a étudié la ruine du joueur avec les suites : la relation , valable pour tout , puis les différences, puis la formule close. Cette page refait le chemin avec un objet que vous n’avez pas encore rencontré en classe, la matrice, et qui est l’outil roi du programme de maths expertes. Aucun prérequis : tout est défini en passant.
Photographier le hasard
Reprenons le jeu du DM : jetons en tout, Alice en possède , elle en gagne un avec la probabilité et en perd un avec la probabilité ; la partie s’arrête en ou en . Le point crucial, déjà présent dans le résultat R1 du DM, est que le jeu n’a pas de mémoire : ce qui peut arriver après le coup numéro ne dépend que de la fortune d’Alice à cet instant, pas du chemin qui l’y a menée.
Une partie en cours est donc entièrement décrite par une liste de nombres : la probabilité que la fortune vaille , celle qu’elle vaille , et ainsi de suite jusqu’à . Toute la question devient : comment cette liste évolue-t-elle d’un coup au suivant ?
Le petit cas, et le tableau
Prenons et . Les fortunes possibles sont , , , , . Depuis une fortune comprise entre et , un coup envoie Alice en avec la probabilité et en avec la probabilité ; depuis ou , la partie est finie, la fortune ne bouge plus. Rangeons ces informations dans un tableau à cinq lignes et cinq colonnes : à la ligne et à la colonne , on écrit la probabilité de passer de la fortune à la fortune en un coup.
Les lignes et les colonnes sont numérotées de à . Chaque ligne a pour somme : depuis n’importe quelle fortune, il se passe forcément quelque chose. Les deux lignes extrêmes, avec leur sur la diagonale, disent que et sont des états absorbants : on y entre, on n’en sort plus. Un tel tableau s’appelle une matrice de transition, et l’évolution aléatoire qu’il code, cette marche sans mémoire de fortune en fortune, s’appelle une chaîne de Markov, du nom du mathématicien russe qui a étudié ces processus au début du XXe siècle.
Deux coups, et le produit
Quelle est la probabilité de passer de la fortune à la fortune en deux coups ? Il faut passer par une fortune intermédiaire , et les possibilités s’excluent mutuellement : c’est un arbre à deux étages, exactement comme en Q2 du DM. En sommant sur toutes les fortunes intermédiaires :
où désigne le coefficient de la ligne et de la colonne . Cette formule, « multiplier le long de chaque chemin, additionner les chemins », est prise comme définition du produit de deux matrices : le coefficient du produit est , la ligne de contre la colonne de . Le produit matriciel n’est donc pas une convention arbitraire : c’est la formule des probabilités totales rangée en tableau. Calculons :
Vérifiez un coefficient à la main : depuis la fortune , être ruiné en deux coups exige de perdre deux fois, probabilité , et c’est bien le coefficient .
En itérant le même argument (conditionner sur la fortune après coups, c’est une récurrence sur ) :
Élever à la puissance , c’est jouer coups d’un seul geste.
Faire tourner, et regarder la colonne 0
Le coefficient de est la probabilité qu’Alice, partie de jetons, soit ruinée en au plus coups : l’état étant absorbant, y être après coups, c’est y être tombé une fois au moins. Or le résultat R1 du DM définit précisément comme la limite de cette probabilité quand tend vers . La colonne des puissances de doit donc converger vers les , dont le DM (question Q4.b, avec ) donne la valeur : pour tout , , soit , , , , . Le script suivant fait le calcul, sans autre outil que la règle ligne par colonne :
T = [[1.0, 0.0, 0.0, 0.0, 0.0],
[0.5, 0.0, 0.5, 0.0, 0.0],
[0.0, 0.5, 0.0, 0.5, 0.0],
[0.0, 0.0, 0.5, 0.0, 0.5],
[0.0, 0.0, 0.0, 0.0, 1.0]]
def produit(A, B):
"""Produit de deux matrices carrees (regle ligne par colonne)."""
n = len(A)
C = [[0.0] * n for i in range(n)]
for i in range(n):
for j in range(n):
for l in range(n):
C[i][j] = C[i][j] + A[i][l] * B[l][j]
return C
def puissance(M, n):
"""M multipliee n - 1 fois par elle-meme."""
R = M
for i in range(n - 1):
R = produit(R, M)
return R
for n in (1, 2, 4, 16, 64):
M = puissance(T, n)
colonne = [round(M[k][0], 6) for k in range(5)]
print("n =", n, ":", colonne)
Sortie :
n = 1 : [1.0, 0.5, 0.0, 0.0, 0.0]
n = 2 : [1.0, 0.5, 0.25, 0.0, 0.0]
n = 4 : [1.0, 0.625, 0.375, 0.125, 0.0]
n = 16 : [1.0, 0.748047, 0.498047, 0.248047, 0.0]
n = 64 : [1.0, 0.75, 0.5, 0.25, 0.0]
À , la colonne affiche , , , , à six décimales près : la formule close du DM, retrouvée par la seule mécanique des puissances. La colonne converge symétriquement vers les probabilités de victoire de Q6, et les colonnes centrales fondent vers : la probabilité que la partie dure encore s’évanouit, ce qui rend visible, numériquement, l’affirmation admise dans R1 selon laquelle la partie s’arrête avec probabilité .
La récurrence du DM en une ligne
Le lien avec le chapitre est plus qu’une coïncidence numérique. Rangez les probabilités de ruine dans une colonne et appliquez-lui : la ligne du produit vaut pour entre et , et ou aux bords. La relation de conditionnement au premier coup de R1 s’écrit donc en une ligne :
La colonne des est un vecteur fixe de la matrice : appliquer un coup de jeu ne la change pas. Et comme en Q19 du DM, cette équation jointe aux conditions et détermine entièrement : la différence de deux solutions vérifie la récurrence homogène avec des bords nuls, donc est nulle. Tout le travail des parties I et II du DM peut se relire ainsi : résoudre , à bords imposés, pour une matrice de taille .
En maths expertes, ces objets ont un chapitre entier : produit et puissances de matrices, graphes et marches aléatoires, vecteurs fixes et comportement limite. Vous y retrouverez la ruine du joueur en exercice d’application, et vous saurez d’où elle vient. Une dernière perspective pour mesurer le chemin : de Moivre a établi la formule close de Q8 vers 1712, alors que le calcul matriciel ne naîtra qu’au XIXe siècle. Il a donc fait, avec les seules suites, ce que la matrice raconte aujourd’hui en cinq lignes de Python.
Sources
- DM3 du chapitre A1 : le résultat R1 (conditionnement au premier coup), les questions Q4, Q6, Q8 et l’argument d’unicité de Q19, que cette page traduit en langage matriciel.
- Le script ci-dessus, exécuté tel quel ; les valeurs limites sont celles de la formule démontrée dans le DM.
- Programme de l’option maths expertes : matrices, graphes et marches aléatoires (chapitres M du catalogue).