Bac S 2014 Spé Maths France Métropole Exercice 4

Enoncé

Un pisciculteur dispose de deux bassins A et B pour l’élevage de ses poissons. Tous les ans à la même période :

  • il vide le bassin B et vend tous les poissons qu’il contenait et transfère tous les poissons du bassin A dans le bassin B ;
  • la vente de chaque poisson permet l’achat de deux petits poissons destinés au bassin A.

Par ailleurs, le pisciculteur achète en plus 200 poissons pour le bassin A et 100 poissons pour le bassin B.

Pour tout entier naturel supérieur ou égal à 1, on note respectivement a_{n} et b_{n} les effectifs de poissons des bassins A et B au bout de n années.

En début de première année, le nombre de poissons du bassin A est a_{0} = 200 et celui du bassin B est b_{0} = 100.

Question 1

Justifier que a_{1} = 400 et b_{1} = 300 puis calculer a_{2} et b_{2}.

Il s’agit ici de calculer les premiers termes des suites (a_n) et (b_n). Pour cela, il d’appliquer calmement chacune des instructions de l’énoncé :

  • il vide le bassin B et vend tous les poissons qu’il contenait et transfère tous les poissons du bassin A dans le bassin B ;
  • la vente de chaque poisson permet l’achat de deux petits poissons destinés au bassin A.
Comme le bassin A contenait 200 poissons, qu’on transfère dans B, celui-ci en contient maintenant 200 après les premières opérations. De plus, comme le bassin B contenait 100 poissons, chacun vendu pour racheter 2 poissons qu’on met dans le bassin A, celui-ci en contient désormais 2 \times 100 = 200.
Par ailleurs, le pisciculteur achète en plus 200 poissons pour le bassin A et 100 poissons pour le bassin B.
Après l’achat de 200 poissons supplémentaires, le bassin A contient donc a_1 = 200 + 200 = 400 poissons, et le bassin B b_1 = 200 + 100 = 300 poissons, ce qui est bien le résultat voulu.

Pour calculer a_2 et b_2, on va faire exactement pareil, il suffit de retenir les dynamiques suivantes :

  • poissons du bassin A transférés dans le bassin B ;
  • poissons du bassin B vendus, chacun vaut deux nouveaux poissons mis dans le bassin A ;
  • achat supplémentaire de 200 poissons pour le bassin A et 100 pour le bassin B.

De même, après une année supplémentaire, le bassin A va contenir le résultat des ventes des poissons du bassin B, soit  2 \times b_1 = 2 \times 300 = 600, ainsi que les 200 poissons supplémentaires qu’on lui achète, soit a_2 = 600 + 200 = 800 . Le bassin B va contenir les poissons transférés du bassin A, soit a_1=400 ainsi que les 100 poissons supplémentaires qu’on lui achète, soit b_2=400+100 = 500.

Question 2

On désigne par A et B les matrices telles que A = \begin{pmatrix}0&2\\1&0\end{pmatrix} et B = \begin{pmatrix}200\\100\end{pmatrix} et pour tout entier
naturel n, on pose X_{n} = \begin{pmatrix}a_{n}\\b_{n}\end{pmatrix}.

a. Expliquer pourquoi pour tout entier naturel n, X_{n+1} = AX_{n} + B.

Calculons AX_n + B. Si tout se passe bien, cela devrait nous donner X_{n+1} :

Pour tout entier naturel n, on a :
 A \times X_n = \begin{pmatrix}0 & 2 \\1 & 0\end{pmatrix} \times \begin{pmatrix}a_{n} \\b_{n}\end{pmatrix} = \begin{pmatrix}0 \times a_{n} + 2 \times b_n\\1 \times a_n + 0 \times b_{n}\end{pmatrix} = \begin{pmatrix}2 b_n \\a_n\end{pmatrix}.
Ainsi,  A \times X_n + B = \begin{pmatrix}2 b_n \\a_n\end{pmatrix} + \begin{pmatrix}200 \\100\end{pmatrix} = \begin{pmatrix}2 b_n + 200 \\a_n + 100\end{pmatrix}.
Ah ! Et ça fait X_{n+1}, ça ?

Vu l’énoncé, ça devrait en tout cas ! Déterminons donc X_{n+1} en comprenant bien ce que l’on fait l’année n+1 avec les poissons de l’année n :

Par ailleurs, pour passer de l’année n à l’année n+1, on a la dynamique suivante :

  • Le bassin A récupère le double du nombre de poissons du bassin B ainsi que 200 poissons supplémentaires, soit a_{n+1} = 2b_n + 200 ;
  • Le bassin B récupère les poissons du bassin A ainsi que 100 poissons supplémentaires, soit b_{n+1} = a_n + 100.

On peut alors conclure :

On a donc bien X_{n+1} = AX_{n} + B.

b. Déterminer les réels x et y tels que \begin{pmatrix}x\\y\end{pmatrix} = A\begin{pmatrix}x\\y\end{pmatrix} + B.

Commençons par réécrire cette équation :

Pour tous réels x et y, on a :
A \begin{pmatrix}x \\y\end{pmatrix} + B = \begin{pmatrix}0 & 2 \\1 & 0\end{pmatrix} \begin{pmatrix}x \\y\end{pmatrix} + \begin{pmatrix}200 \\100\end{pmatrix} = \begin{pmatrix}2y + 200 \\x + 100\end{pmatrix}.
Donc \begin{pmatrix}x\\y\end{pmatrix} = A\begin{pmatrix}x\\y\end{pmatrix} + B \Leftrightarrow \begin{pmatrix}x\\y\end{pmatrix} = \begin{pmatrix}2y + 200 \\x + 100\end{pmatrix}.

Or, je rappelle que :

Deux matrices sont égales si et seulement si leurs coefficients sont égaux deux à deux.

Ici, on en déduit :

Or, deux matrices sont égales si et seulement si leurs coefficients sont égaux deux à deux donc :
\begin{pmatrix}x\\y\end{pmatrix} = A\begin{pmatrix}x\\y\end{pmatrix} + B \Leftrightarrow \begin{cases}x = 2y + 200 \\y = x + 100\end{cases}.

Il ne reste plus qu’à poursuivre en résolvant le système de deux équations à deux inconnues que l’on a obtenu :

 \Leftrightarrow \begin{cases}x = 2y + 200 \\y = \underbrace{2y + 200}_x + 100\end{cases}
 \Leftrightarrow \begin{cases}x = 2y + 200 \\y = 2y + 300\end{cases}
 \Leftrightarrow \begin{cases}x = 2y + 200 \\y = - 300\end{cases}
 \Leftrightarrow \begin{cases}x = 2 \times (-300) + 200 \\y = - 300\end{cases}
 \Leftrightarrow \begin{cases}x = -400 \\y = -300\end{cases}

c. Pour tout entier naturel n, on pose Y_{n} = \begin{pmatrix}a_{n} + 400\\ b_{n} + 300\end{pmatrix}.
Démontrer que pour tout entier naturel n, Y_{n+1} = AY_{n}.

Faisons comme à la question a. : calculons AY_n et voyons si cela donne Y_{n+1} !

Je vois que cela commence à rentrer :

AY_n = \begin{pmatrix}0 & 2 \\1 & 0\end{pmatrix} \begin{pmatrix}a_n + 400 \\b_n + 300\end{pmatrix} = \begin{pmatrix}0 \times (a_n + 400) + 2 \times (b_n + 300) \\1 \times (a_n + 400) + 0 \times (b_n + 300)\end{pmatrix} = \begin{pmatrix}2b_n + 600 \\a_n + 400\end{pmatrix}

D’autre part, on a :

De plus,
Y_{n+1} = \begin{pmatrix}a_{n+1} + 400 \\b_{n+1} + 300\end{pmatrix}

Or, je rappelle que, comme on l’a déterminé à la question a., \begin{cases}a_{n+1} = 2b_n + 200 \\b_{n+1} = a_n + 100\end{cases}. D’où :

... = \begin{pmatrix}\underbrace{2b_n + 200}_{a_{n+1}} + 400 \\\underbrace{a_n + 100}_{b_{n+1}} + 300\end{pmatrix} = \begin{pmatrix}2b_n + 600 \\a_n + 400\end{pmatrix}.

On peut alors conclure :

D’où, on a bien que Y_{n+1} = AY_n.

Question 3

Pour tout entier naturel n, on pose Z_{n} = Y_{2n}.
a. Démontrer que pour tout entier naturel n, Z_{n+1} = A^2 Z_{n}.
En déduire que pour tout entier naturel n, Z_{n+1} = 2Z_{n}.

Faisons comme les fois précédentes : calculons A^2 Z_n et montrons que cela nous donne Z_{n+1} !

Cela marcherait sans doute… mais on ne va pas faire ça parce que ça ferait quand même beaucoup de calculs ! En effet, il faudrait expliciter Z_n, puis calculer A^2 et le multiplier par Z_n, et enfin, expliciter Z_{n+1}

Tâchons donc d’être malin ici. Z_n n’est pas défini n’importe comment. Il s’agit de Y_{2n}. Or, on vient de montrer une relation intéressante sur Y_n, à savoir que Y_{n+1} = AY_n. Tirons-en profit !

Soit n un entier naturel. On a :
Z_{n+1} = Y_{2(n+1)} = Y_{2n+2} = Y_{(2n+1) + 1}.

On peut alors exploiter la relation Y_{n+1} = AY_n avec en indice, non pas n, mais 2n+1 :

Or, en appliquant la relation démontrée à la question 2. c., on a Y_{(2n+1) + 1} = AY_{2n+1} d’où Z_{n+1} = AY_{2n+1}.

Une idée pour continuer ?

Hum… appliquer à nouveau la relation Y_{n+1} = AY_n avec en indice 2n ?

Je ne l’aurais pas mieux dit !

De même, Y_{2n+1} = AY_{2n}, d’où Z_{n+1} = A(\underbrace{AY_{2n}}_{Y_{2n+1}}) = A(AZ_n)

Reste à conclure en utilisant le fait que :

La multiplication de matrices est associative, c’est-à-dire que A(BC) = (AB)C= ABC.

On peut donc déplacer les parenthèses :

Or, la multiplication de matrices est associative donc Z_{n+1} = (AA)Z_n = A^2Z_n, ce qui est bien le résultat voulu.

Montrons maintenant que Z_{n+1} = 2Z_n. Vous remarquerez qu’entre Z_{n+1} = A^2Z_n et Z_{n+1} = 2Z_n, A^2 a disparu. Calculons donc A^2 pour voir ce qu’il en est :

Calculons A^2. On a :
 A^2 = A \times A = \begin{pmatrix} 0&2 \\ 1&0 \end{pmatrix} \begin{pmatrix} 0&2 \\ 1&0 \end{pmatrix} = \begin{pmatrix} 0 \times 0 + 2 \times 1 & 0 \times 2 + 2 \times 0 \\ 1 \times 0 + 0 \times 1 & 1 \times 2 + 0 \times 0 \end{pmatrix} = \begin{pmatrix} 2 & 0 \\ 0 & 2 \end{pmatrix}.

Arrivé à ce point, vous devez absolument penser à la matrice identité :

La matrice identité d’ordre n est une matrice carrée de n lignes et n colonnes dont tous les coefficients sont nuls sauf ceux de la diagonale, qui eux, valent 1 : I_n = \begin{pmatrix}1 & \cdots & 0 \\\vdots & \ddots & \vdots \\0 & \cdots & 1\end{pmatrix}.

En effet, en factorisant tous les coefficients de la matrice obtenue par 2, on met en évidence la matrice identité I_2 :

... = 2 \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = 2I_2.

Maintenant que l’on a calculé A^2, on peut revenir à Z_{n+1} :

D’où :
Z_{n+1} = A^2 Z_n = (2 I_2) Z_n d’après le calcul qui précède.

Une fois encore, on va utiliser l’associativité de la multiplication de matrices :

En utilisant une nouvelle fois l’associativité de la multiplication de matrices, on a : Z_{n+1} = 2 (I_2 Z_n).

Et I_2 Z_n on sait le calculer, puisque :

Soit n et m deux entiers naturels, I_n la matrice identité d’ordre n, A une matrice de taille n \times m et B une matrice de taille m \times n. Alors :

  •  I_n A = A
  •  B I_n = B

Ici, on se situe dans le premier cas (le cas « I_n A = A ») :

De plus, I_2 Z_n = Z_n d’où Z_{n+1} = 2Z_n.

b. On admet que cette relation de récurrence permet de conclure que pour tout entier naturel n,
Y_{2n} = 2^n Y_{0}.
En déduire que Y_{2n + 1} = 2^nY_{1} puis démontrer que pour tout entier naturel n, a_{2n} = 600 \times 2^n - 400 et a_{2n+1} = 800 \times 2^n - 400.

Ici, la tournure de l’énoncé « en déduire que » vous indique que la relation recherchée est une conséquence de la relation que l’on vous demande d’admettre. Or, cette relation donne une information sur Y_{2n}. L’idée naturelle est donc d’exprimer Y_{2n+1} en fonction de Y_{2n}. Et ça, on sait faire, on l’a déjà fait à la question 3. a. :

D’après la question 2. c., Y_{2n+1} = A Y_{2n} .
Or, Y_{2n} = 2^n Y_{0} d’après l’énoncé, d’où Y_{2n+1} = A ( 2^n Y_0 )

Et là, on se souvient que :

Soit A et B deux matrices et t un nombre réel. On a :
 A(tB) = (tA)B = t(AB).

Donc on peut écrire :

... = 2^n (AY_0).

Et que vaut AY_0 ?

Hmm… On sait d’après la question 2. c. que, pour tout n entier naturel, Y_{n+1} = AY_n donc, en appliquant cette relation à n = 0, on a AY_0 = Y_1 non ?

Exactement :

... = 2^n Y_1, en appliquant le résultat de la question 2. c. à n = 0, ce qui est bien le résultat souhaité.

Il reste à démontrer que pour tout entier naturel n, a_{2n} = 600 \times 2^n - 400 et   a_{2n+1} = 800 \times 2^n - 400.

Ce que vous devez bien comprendre, c’est que rien n’est laissé au hasard dans un énoncé. On vous demande de prouver ces égalités alors que l’on vous a donné Y_{2n} = 2^n Y_0 et que l’on vous a fait prouver Y_{2n+1} = 2^n Y_1.

Voyons donc ce que l’on peut tirer de ces deux relations :

Y_{2n} = 2^n Y_0 \Leftrightarrow \begin{pmatrix}a_{2n} + 400 \\b_{2n} + 300\end{pmatrix} = 2^n \begin{pmatrix}600 \\400\end{pmatrix}

Deux matrices égales = réflexe !

Deux matrices sont égales si et seulement si leurs coefficients sont égaux deux à deux.

On en tire :

Or, deux matrices sont égales si et seulement si leurs coefficients sont égaux deux à deux donc Y_{2n} = 2^n Y_0 \Leftrightarrow \begin{cases}a_{2n} + 400 = 2^n \times 600 \\b_{2n} + 300 = 2^n \times 400\end{cases}

En passant le 400 de l’autre côté, on obtient la première égalité souhaitée :

D’où a_{2n} = 600 \times 2^n - 400.

De la même façon, exploitons la relation Y_{2n+1} = 2^n Y_1 :

De même, on a :
Y_{2n+1} = 2^n Y_1 \Leftrightarrow \begin{pmatrix}a_{2n+1} + 400 \\b_{2n+1} + 300\end{pmatrix} = 2^n \begin{pmatrix}a_{1} + 400 \\b_{1} + 300\end{pmatrix}

\Leftrightarrow \begin{pmatrix}a_{2n+1} + 400 \\b_{2n+1} + 300\end{pmatrix} = 2^n \begin{pmatrix}400 + 400 \\300 + 300\end{pmatrix}\\
\Leftrightarrow \begin{pmatrix}a_{2n+1} + 400 \\b_{2n+1} + 300\end{pmatrix} = 2^n \begin{pmatrix}800 \\600\end{pmatrix}\\
\Leftrightarrow \begin{cases}a_{2n+1} + 400 = 2^n \times 800 \\b_{2n+1} + 300 = 2^n \times 600\end{cases}

 
D’où a_{2n+1} = 800 \times 2^n - 400.


Question 4

Le bassin A a une capacité limitée à 10 000 poissons.

a. On donne l’algorithme suivant :

Bac S 2014 Spé Maths France Métropole Exercice 4 2014-fm-exo4s-1

Que fait cet algorithme ? Justifier la réponse.

Concentrons-nous sur les 3 points signalés ci-dessous :

Bac S 2014 Spé Maths France Métropole Exercice 4 2014-fm-exo4s-3

Tout ce que je veux vous expliquer, il faut l’écrire sur votre copie (en ignorant la numérotation (1), (2), (3) et (4) bien sûr…) :

Cet algorithme :

  • demande à l’utilisateur de saisir une valeur p (1) ;
  • si cet entier est pair (2), il calcule 600 \times 2^n - 400 (4) après avoir affecté à n la valeur \dfrac{p}{2} (3).

Autrement dit, lorsque l’entier p saisi est pair, l’algorithme calcule 2^{\small{p/2}} \times 600 - 400, soit a_{2(p/2)} = a_p.

Le raisonnement est exactement le même lorsque p est impair :

De même, l’algorithme calcule 800 \times 2^n - 400 après avoir affecté à n la valeur \dfrac{p-1}{2}. Autrement dit, il calcule a_{2((p-1)/2)+1} = a_p.

Dans les deux cas, l’algorithme calcule donc a_p :

Donc, l’algorithme calcule a_p pour une valeur de p saisie par l’opérateur : autrement dit, il calcule le nombre de poissons du bassin A au bout de p années.

b. Ecrire un algorithme qui affiche le nombre d’années pendant lesquelles le pisciculteur pourra utiliser le bassin A.

On vous demande ici d’écrire un algorithme « de toutes pièces ». Voici les étapes nécessaires.

\textsuperscript{\textcircled{\tiny{1}}} Déclarer les variables nécessaires et les initialiser.

Pour déterminer ces variables, la première question que vous devez vous poser est la suivante : que l’algorithme doit-il déterminer ? La réponse à cette question est donnée par l’énoncé :

Ecrire un algorithme qui affiche le nombre d’années pendant lesquelles le pisciculteur pourra utiliser le bassin A.

Ainsi, on sait qu’il faut déclarer une variable p, entier naturel, pour stocker ce nombre d’années.

Et ce n’est pas tout. En l’occurrence, ce nombre d’années est marqué par une contrainte :

Ecrire un algorithme qui affiche le nombre d’années pendant lesquelles le pisciculteur pourra utiliser le bassin A.

sachant que :

Le bassin A a une capacité limitée à 10000 poissons.

On cherche donc à déterminer un nombre d’années contraint par le nombre de poissons que contient le bassin A. Ainsi, il faut également déclarer une variable a, entier naturel également, qui servira à stocker le nombre de poissons du bassin A que la phase de traitement devra calculer.

En résumé, à ce stade du raisonnement, on déclare les variables suivantes :

Bac S 2014 Spé Maths France Métropole Exercice 4 2014-fm-exo4s-7

Reste à les initialiser.

J’initialiserais bien a à a_0 et p à  0

OK pour p, mais pas pour a. La question qu’il faut se poser, c’est « Avec quelle situation initiale je vais entrer dans la phase de traitement ? ».

Ici, ce qu’il faut remarquer, c’est qu’au bout d’un an, le bassin A contiendra a_1 = 400 poissons. Le pisciculteur pourra donc conserver son bassin pendant au moins un an. Ainsi, on pourra bien incrémenter p au moins une fois.

Ca veut dire quoi « incrémenter p » déjà ?

Ca veut dire « ajouter 1 à la variable p ».

Voici donc comment il faut initialiser a et p :

Bac S 2014 Spé Maths France Métropole Exercice 4 2014-fm-exo4s-8

Passons maintenant à la phase de traitement.

\textsuperscript{\textcircled{\tiny{2}}} Dans la phase de traitement, écrire les instructions qui permettent à l’algorithme d’accomplir la tâche souhaitée.

Ici, toute l’idée est d’augmenter p tant que cela est possible, c’est-à-dire tant que a, qui contient le nombre de poissons du bassin A, est inférieur ou égal à 10 000.

Vous l’aurez compris, on va utiliser une boucle « Tant que » : cette structure permet de répéter une série d’instructions tant que la condition qu’elle pose est vérifiée. Cela donne :

Bac S 2014 Spé Maths France Métropole Exercice 4 2014-fm-exo4s-9

Mais ce n’est pas tout !

Oui enfin, vu le gros espace blanc que tu as mis sur l’image ci-dessus, on s’en doutait un peu…

J’avoue… Mais donc, il y a bien quelque chose à faire ! Il faut calculer la nouvelle valeur de a à chaque passage dans la boucle… et ça, on sait faire ! Où plutôt, l’énoncé nous a indiqué comment faire à la question précédente !

Il suffit donc de réinjecter les lignes de la phase de traitement de la question 3. b. dans notre algorithme :

Bac S 2014 Spé Maths France Métropole Exercice 4 2014-fm-exo4s-10

Vous remarquerez que l’ajout de ces instructions a entraîné la déclaration d’une variable supplémentaire, n. Il est tout à fait courant d’avoir à déclarer des variables supplémentaires lorsque le raisonnement nous pousse à le faire pendant l’élaboration de la phase de traitement.

D’accord, mais n’aurais-tu pas oublié d’initialiser n ?

Très bonne remarque ! En fait, non, nous n’avons pas besoin d’initialiser n car, dès sa première apparition dans la phase de traitement, on lui fait prendre une valeur particulière. A quoi cela servirait-il de l’initialiser si c’est pour immédiatement écraser cette valeur dans la phase de traitement ?…

\textsuperscript{\textcircled{\tiny{3}}} Dans la phase de sortie, écrire une instruction d’affichage du résultat souhaité.

Un algorithme, c’est « bête et méchant ». Ca n’affiche rien si on ne lui demande pas de le faire. Voilà qui serait bien dommage après tout le travail accompli.

Ecrivons donc une instruction d’affichage du résultat souhaité. Ici, on veut avoir le nombre d’années pendant lesquelles le pisciculteur pourra utiliser le bassin A. Autrement dit, on souhaite afficher la valeur de p. Il suffit donc d’ajouter les lignes suivantes :

Bac S 2014 Spé Maths France Métropole Exercice 4 2014-fm-exo4s-11

Fin de l’épreuve du Bac S 2014 Spé Maths France Métropole Exercice 4.

Exprimez vous!