mathématiques approfondies (ECG 1re année) · Chapitre 11 · Exercice
Une puissance de matrice, conjecturée puis démontrée
Informatique et algorithmique · Matrices et systèmes linéaires · niveau 2
Énoncé
Soit . Conjecturer en comparant al.matrix_power(M, n) à une formule, pour allant de à , puis démontrer la conjecture.
Corrigé
import numpy as np
import numpy.linalg as al
M = np.array([[1, 2], [0, 1]])
for n in range(1, 11):
A = al.matrix_power(M, n)
B = np.array([[1, 2 * n], [0, 1]]) # la formule conjecturee
# le plus grand ecart, coefficient par coefficient
print(n, np.max(np.abs(A - B)))
Ce que la machine affiche : un sur chacune des dix lignes. La conjecture
est donc confirmée pour .
La démonstration, par récurrence. L'initialisation en est immédiate. Supposons la formule vraie au rang ; alors
qui est la formule au rang . Elle vaut donc pour tout .
Le point délicat. Dix vérifications ne démontrent rien : elles disent seulement qu'aucun contre-exemple n'apparaît parmi les dix premiers cas. La machine suggère la formule, la récurrence l'établit. C'est exactement le partage des rôles que le programme attend de l'informatique.
Un détail de code. On compare par np.max(np.abs(A - B)) et non par A == B : ce test rend un tableau de booléens, pas un booléen. Sur des coefficients flottants, on comparerait d'ailleurs cet écart à un petit seuil plutôt qu'à zéro.
Exercices semblables
- Deux produits qui n'en sont pas un corrigé
- Résoudre, et vérifier corrigé
- Approcher corrigé
- L'escalier de la suite de Héron corrigé
- L'ordre de convergence des rectangles corrigé