Bien que ce ne soit pas suggéré par l'énoncé, l'algorithme matriciel, qu'on va introduire ici, se révèle plus concis que l'algorithme de la question 4 (ci-dessous). Pour gérer les matrices dans cette page html, on y a ajouté le logiciel sylvester.js.
La matrice s'écrit A = $M [[0,2],[1,0]]
et l'appel à alert A.inspect()
produit l'affichage suivant:
[0, 2] [1, 0]
La matrice B est en fait un vecteur-colonne; il se crée par B = $V [200,100]
et
l'affichage alert B.inspect()
produit le résultat que voici :
[200, 100]
Le vecteur colonne X est géré par une méthode analogue.
Comme la lettre "x" ressemble à un signe de multiplication, sylvester multiplie A par
X en écrivant A.x X
L'addition s'abrège en add
ce qui fait que la boucle peut s'écrire en une seule
ligne: X = (A.x X).add B
On peut résoudre le système en constatant que, si I est la matrice identité d'ordre 2, le système s'écrit indifféremment
Un algorithme pour résoudre le système peut donc consister à créer la matrice I, lui soustraire A pour avoir C, inverser C puis multiplier le résultat par B :
Pour simplifier l'écriture de l'algorithme, on crée une fonction qui, à n, associe 2n;
elle s'appelle deuxPuissance
ce qui fait que pour calculer 23 il suffira
d'écrire deuxPuissance 3
On voit donc que l'algorithme ci-dessus calcule le nombre de poissons contenus dans le bassin A au bout de p années. Il suffira alors de la modifier un peu pour répondre à la question b