Question 1
Question où l’essentiel résidait dans la qualité de la rédaction ; plusieurs candidats ont utilisé un support graphique sur leur brouillon pour trouver, mais n’ont pas osé reproduire leurs graphes sur la copie [1]. Dommage, car il y avait là l’ébauche du graphe d’une chaîne de Markov [2], apparu sous forme d’une production spontanée puisque la notion n’est pas au programme...
Voici le brouillon d’un candidat, qui s’en est servi comme support de raisonnement après avoir inventé les graphes :
Un autre candidat a opéré en plusieurs étapes, en tenant compte du fait que les opérations ne sont pas toutes effectuées en même temps :
La suite, avec représentation fléchée des ajouts des 200 et 100 poissons, est une étape vers la généralisation de l’onglet suivant :
Question 2
Question a
On généralise le raisonnement du 1. Voici la suite du brouillon du second candidat de l’onglet précédent :
La suite consiste à transformer les écritures des suites a et b, en écriture matricielle. Ce qui est immédiat.
Question b
En réécrivant le système sous la forme X=AX+B, on peut le résoudre matriciellement. Ceci est fait dans le dernier onglet avec CoffeeScript. Mais on peut aussi considérer le système comme un de ceux qu’on résout au collège :
- x = 2y+200
- y = x+100
Pour le résoudre, on peut utiliser l’outil en ligne ci-dessous :
Le système se réécrit
- x-2y = 200
- -x+y = 100
Ou encore
- (1)x+(-2)y = 200
- (-1)x+(1)y = 100
Il suffit d’entrer ces nombres dans le fichier html ci-dessus et on a la solution :
La question suivante est un cas classique de transformation d’une suite arithmético-géométrique en une suite géométrique, à ceci près que la raison A est une matrice :
Question c
En appelant C la solution constante trouvée au b (exprimée sous forme d’un vecteur colonne), on a
$Y_n = X_n -C$ et $X_n = Y_n +C$
d’où
$Y_{n+1} = X_{n+1} - C=AX_{n}+B-C=A \left( Y_n + C)+B-C=AY_n+AC+B-C$
Mais $AC+B=C$ par définition de $C$ donc
$Y_{n+1}=AY_n + C - C=AY_n$
CQFD
Question 3
Question a
On a $Z_{n+1}=Y_{2(n+1)}=Y_{2n+2}=AY_{2n+1}=A^2Y_{2n}=A^2Z_{n}$
(on a utilisé deux fois la relation de récurrence sur Y, une fois pour n+1 et une fois pour n)
On peut calculer le carré de A pour se faire une idée de ce que cela donne ; par exemple en allant dans le dernier onglet et en y mettant le script suivant :
A = $M [[0,2],[1,0]]
alert (A.x A).inspect()
Ce faisant, on apprend que $A^2=2I$, d’où $Z_{n+1}=2IZ_{n}=2Z_{n}$, ce qu’il fallait démontrer.
Question b
Remarque : La seule formule démontrable par récurrence était admise...
On a $Y_{2n+1}=AY_{2n}=A\times2^nY_{0}=2^nAY_{0}=2^nY_{1}$
On en déduit alors par comparaison des abscisses, que
$a_{2n+1}+400 = 2^n \left( a_{1}+400 \right)$
$a_{2n+1}+400 = 2^n \left( 400+400 \right)$
$a_{2n+1}+400 = 800 \times 2^n$
$a_{2n+1} = 800 \times 2^n -400$
De même, la relation admise sur $Y_{2n}$ permet de montrer que $a_{2n} = 600 \times 2^n - 400$
Ceci permet de rédiger l’algorithme, sans avoir à boucler. Mais la formule explicite dépendant de la parité de p, il est nécessaire de mettre en œuvre un test : Algorithme rapide mais long à rédiger. Voir l’onglet suivant pour approfondir la question...
Question 4
Plus généralement, dans cet onglet, est traité l’aspect algorithmique du sujet :
- Utilisation des matrices de la question 2 pour abréger la boucle de l’algorithme de la question 4 ;
- Utilisation des mêmes matrices pour résoudre le système (par inversion d’une matrice) ;
- Test de l’algorithme de la question 4, en CoffeeScript ;
- Réponse à la question 4.b
Le tout, en html parce que cela permet de tester les algorithmes, et même si on se sent aventureux, les modifications que l’on invente, en ligne.
Exercice 4 spé maths
Question 2
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 A
La matrice s'écrit A = $M [[0,2],[1,0]]
et l'appel à alert A.inspect()
produit l'affichage suivant:
[0, 2] [1, 0]
Le vecteur B
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.
Opérations
Multiplication de la matrice A par le vecteur X
Comme la lettre "x" ressemble à un signe de multiplication, sylvester multiplie A par
X en écrivant A.x X
Addition de B
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
L'algorithme en CoffeeScript
Le système de la question 2
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
- X = AX+B
- IX = AX+B
- IX-AX = B
- (I-A)X = B
- CX = B
- X = C-1B
(On a noté C la matrice I-A)
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 :
Question 4
a) L'algorithme de l'énoncé
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 le modifier un peu pour répondre à la question b
b) L'algorithme demandé
Remarque: Un modèle qui n'a de valeur que sur 10 ans n'est pas très utile...
Pour essayer dans un autre onglet du navigateur :
Commentaires