Bac S 2013 Spé Maths Centres étrangers Exercice 4

Enoncé

Une espèce d’oiseaux ne vit que sur deux îles A et B d’un archipel.
Au début de l’année 2013, 20 millions d’oiseaux de cette espèce sont présents sur l’île A et 10 millions sur l’île B.
Des observations sur plusieurs années ont permis aux ornithologues d’estimer que, compte tenu des naissances, décès, et migrations entre les deux îles, on retrouve au début de chaque année les proportions suivantes :

  • sur l’île A : 80 % du nombre d’oiseaux présents sur l’île A au début de l’année précédente et 30 % du nombre d’oiseaux présents sur l’île B au début de l’année précédente ;
  • sur l’île B : 20 % du nombre d’oiseaux présents sur l’île A au début de l’année précédente et 70 % du nombre d’oiseaux présents sur l’île B au début de l’année précédente.

Pour tout entier naturel n, on note a_n (respectivement b_n) le nombre d’oiseaux (en millions) présents
sur l’île A (respectivement B) au début de l’année (2013 + n).

Partie A – Algorithmique et conjectures

Bac S 2013 Spé Maths Centres étrangers Exercice 4 2013-ce-exo4s-1On donne ci-contre un algorithme qui doit afficher le nombre d’oiseaux vivant sur chacune des deux îles, pour chaque année comprise entre 2013 et une année choisie par l’utilisateur.

Question 1

Cet algorithme comporte des oublis dans le traitement. Repérer ces oublis et les corriger.

Pour comprendre ce qui a été oublié dans cet algorithme, il faut comprendre comment il a été construit :

  1. Initialisation
     
    Lire n
    Affecter à a la valeur 20
    Affecter à b la valeur 10
    Affecter à i la valeur 2013
    Afficher i
    Afficher a
    Afficher b

    L’algorithme commence par initialiser les variables dont il a besoin :

    • n est la variable qui contient l’année choisie par l’utilisateur. L’instruction « Lire n » signifie que l’algorithme attend que cette valeur soit saisie par l’utilisateur afin de pouvoir la « lire », c’est-à-dire, en prendre connaissance ;
    • a (respectivement b) est la variable qui contient les termes de la suite (a_n) (respectivement les termes de la suite (b_n)), c’est-à-dire le nombre en millions d’oiseaux présents sur l’île A (respectivement sur l’île B). Au départ, il y a 20 millions d’oiseaux présents sur l’île A et 10 millions sur l’île B : les variables A et B sont donc initialisées respectivement à 20 et 10 ;
    • i est la variable qui va contenir l’année considérée par l’algorithme. La première année considérée est l’année 2013 : i est donc initialisée avec la valeur 2013 ;
    • une fois les variables initialisées, l’algorithme les affiche une première fois, avant traitement : c’est l’objet des instructions « Afficher i », « Afficher a », et « Afficher b ».
    Hum… Comment se fait-il qu’on commence tout de suite par la phase d’initialisation ? Moi, mon prof m’a toujours dit que la première phase, c’était la phase de déclaration des variables…

    …et votre professeur a bien raison ! Effectivement, l’énoncé oublie ici la phase de déclaration des variables qui est pourtant cruciale : certains langages de programmation génèrent une erreur et refusent d’exécuter le programme lorsqu’on oublie cette phase !

    Effectivement, l’algorithme devrait commencer par :

    • n et i sont des entiers naturels
    • a, b et c sont des nombres réels

    Mais bon, l’énoncé indique que les oublis ne concernent que la phase « Traitement ». Donc ceci n’a pas besoin d’être mentionné sur la copie.

  2. Traitement
     

    Tant que i ~\textless ~n faire

    Affecter à c la valeur (0,8a + 0,3b)
    Affecter à b la valeur (0,2a + 0,7b)
    Affecter à a la valeur c

     
    Fin du Tant que

    Analysons cette phase de traitement. Nous cherchons à calculer les différentes populations d’oiseaux qui évoluent toujours de la même façon d’une année sur l’autre. Donc c’est bien un bloc « Tant que » qu’il faut mettre en place afin d’exécuter toujours les mêmes instructions pour chaque année i considérée.

    Mais alors, quelles instructions mettre à l’intérieur de cette boucle « Tant que » ?

    Pour chaque année i, le contenu de la variable a doit être remplacé par sa nouvelle valeur, sachant que cette nouvelle valeur vaut (80% de l’ancienne valeur de a + 30% de l’ancienne valeur de b), donc il faut bien lui affecter la valeur (0,8a + 0,3b).

    Eh mais attends, dans l’énoncé, c’est à la variable c qu’on affecte la valeur (0,8a + 0,3b) et non pas à la variable a !

    Exact.

    Regardez l’instruction qui suit : la valeur de la variable b doit, elle, être remplacée par (20% de l’ancienne valeur de a + 70% de l’ancienne valeur de b). Or, si on affectait directement à a la valeur (0,8a + 0,3b) dans l’instruction précédente, l’ancienne valeur de a serait perdue « à jamais » et le calcul de la nouvelle valeur de b serait alors faux !

    D’où l’idée de stocker la valeur (80% de l’ancienne valeur de a + 30% de l’ancienne valeur de b) dans une variable c, et d’affecter sa valeur à a uniquement lorsque le calcul de la nouvelle valeur de b a eu lieu.

    OK mais qu’est-ce qui a été oublié alors ?

    Deux choses mon capitaine :

    • Premièrement, le bloc « Traitement » ne contient aucune instruction « Afficher » ! C’est bien beau de faire tous ces traitements, mais si on affiche rien, ça ne sert à rien ! Ici, on veut l’année et le nombre d’oiseaux présents respectivement sur les îles A et B. Il faut donc afficher les variables i, a et b :
       
      Tant que i ~\textless ~n faire

      Affecter à c la valeur (0,8a + 0,3b)
      Affecter à b la valeur (0,2a + 0,7b)
      Affecter à a la valeur c
      Afficher i
      Afficher a
      Afficher b

      Fin du Tant que
    • Deuxièmement, le bloc « Traitement » ne contient aucune instruction sur la variable i. Autrement dit, i vaut toujours sa valeur initiale et ne devient donc jamais supérieure ou égale à n : la boucle « Tant que » devient infinie !
       

      Pour éviter cela, il faut bien penser à incrémenter i, c’est-à-dire à affecter à i la valeur i + 1 au sein du bloc « Tant que » afin qu’il augmente à chaque passage dans la boucle et finisse par atteindre la condition de sortie. Et il faut le faire avant l’instruction « Afficher i » sinon, la toute première fois qu’on entre dans la boucle, on afficherait la valeur « 2013 » alors qu’on aura calculé les populations de l’année 2014. Ainsi, le bloc « Traitement » doit être complété de la façon suivante :

      Tant que i ~\textless ~n faire

      Affecter à c la valeur (0,8a + 0,3b)
      Affecter à b la valeur (0,2a + 0,7b)
      Affecter à a la valeur c
      Affecter à i la valeur i + 1
      Afficher i
      Afficher a
      Afficher b

      Fin du Tant que
    Il y a quelque chose dont tu n’as pas parlé. C’est la condition de sortie de la boucle « Tant que ». Je comprends bien que puisqu’on veut calculer les populations d’oiseaux entre l’année 2013 et l’année n, il faut le faire tant que i est inférieur à n, mais je ne sais jamais si ça doit être « inférieur ou égal » ou « strictement inférieur »…
    Pour savoir s’il faut mettre « inférieur ou égal » ou « strictement inférieur », il faut remplacer les variables de la condition de sortie par des valeurs « chiffrées » et voir ce qui se passe à l’intérieur du bloc d’instruction lors du « dernier passage » supposé par la condition de sortie.

    Ici, l’énoncé propose « strictement inférieur ». Supposons par exemple que n vaut 2020. Dans ce cas, la dernière valeur supposée de i est 2019. Passons dans la boucle « Tant que » :

    • les nouvelles populations sont calculées à partir de celles de 2019 grâce aux instructions « Affecter à c la valeur (0,8a + 0,3b) », « Affecter à b la valeur (0,2a + 0,7b) », et « Affecter à a la valeur c ». Il s’agit donc des populations de 2020 ;
    • i est incrémenté grâce à l’instruction « Affecter à i la valeur i + 1 » et vaut alors 2020 ;
    • les nouvelles valeurs de i, a et b sont affichées par les instructions « Afficher i », « Afficher a », et « Afficher b » ;
    • lorsqu’on évalue à nouveau la condition de sortie, i n’est plus strictement inférieur à n donc on sort de la boucle : cela nous convient parfaitement puisque les populations de l’année 2020 ont été calculées et affichées.

    La condition de sortie de la boucle « Tant que » proposée par l’énoncé est donc juste !


Question 2

On donne ci-dessous une copie d’écran des résultats obtenus après avoir corrigé l’algorithme précédent dans un logiciel d’algorithmique, l’utilisateur avant choisi l’année 2020.

Bac S 2013 Spé Maths Centres étrangers Exercice 4 2013-ce-exo4s-2

Au vu de ces résultats, émettre des conjectures concernant le sens de variation et la convergence des suites (a_n) et (b_n).

Aucune surprise ici :

Au vu des résultats présentés par l’énoncé :

  • la suite (a_n) semble être décroissante et admettre 18 pour limite ;
  • la suite (b_n) semble être croissante et admettre 12 pour limite.

Partie B – Etude mathématique

On note U_n la matrice colonne \begin{pmatrix}a_n \\b_n\end{pmatrix}.

Question 1

Montrer que, pour tout entier naturel n, U_{n+1} = MU_n, où M est une matrice carrée d’ordre 2 que l’on déterminera.
On admet alors que U_n = M^nU_0 pour tout entier naturel n \geq 1.

Ce que l’on cherche, c’est une relation entre U_n et U_{n+1}. Or, U_n = \begin{pmatrix}a_n \\b_n\end{pmatrix} et U_{n+1} = \begin{pmatrix}a_{n+1} \\b_{n+1}\end{pmatrix} donc, la question qu’il faut se poser, c’est « Comment est-ce que a_n, b_n, a_{n+1} et b_{n+1} sont-ils liés ? ».

Et pour répondre à cette question, il suffit de traduire l’énoncé :

sur l’île A : 80 % du nombre d’oiseaux présents sur l’île A au début de l’année précédente et 30 % du nombre d’oiseaux présents sur l’île B au début de l’année précédente

Autrement dit, sachant que a_n représente le nombre en millions d’oiseaux présents sur l’île A pour l’année (2013 + n), cela signifie que pour l’année (2013 + (n+1)), a_{n+1} = 0,8a_n + 0,3b_n.

De la même façon, en traduisant ce passage-ci :

sur l’île B : 20 % du nombre d’oiseaux présents sur l’île A au début de l’année précédente et 70 % du nombre d’oiseaux présents sur l’île B au début de l’année précédente

on obtient que b_{n+1} = 0,2a_n + 0,7b_n.

Ainsi, on a déterminé un système d’équations linéaires :

En traduisant les données de l’énoncé, on a :
\begin{cases}a_{n+1} = 0,8a_n + 0,3b_n \\b_{n+1} = 0,2a_n + 0,7b_n\end{cases}
OK mais comment on trouve M alors ?

Ah pour ça, il suffit de se souvenir comment on représente un système d’équations sous forme matricielle (bien prêter attention aux couleurs sur l’illustration suivante) :

Bac S 2013 Spé Maths Centres étrangers Exercice 4 2013-as-exo4s-3

Ici :

  • n vaut 2 ;
  • a_n et b_n jouent respectivement les rôles de x_1 et x_2 ;
  • a_{n+1} et b_{n+1} jouent respectivement les rôles de c_1 et c_2.

Donc on peut écrire, en se référant au système d’équations linéaires que l’on vient de trouver :

Ce système d’équations peut être représenté sous forme matricielle de la façon suivante :
Bac S 2013 Spé Maths Centres étrangers Exercice 4 2013-ce-exo4s-3
Donc U_{n+1} = \begin{pmatrix}0,8 & 0,3 \\0,2 & 0,7\end{pmatrix} U_n d’où M = \begin{pmatrix}0,8 & 0,3 \\0,2 & 0,7\end{pmatrix}.

Question 2

A l’aide d’un raisonnement par récurrence, justifier que, pour tout entier naturel n \geq 1 :

M^n = \begin{pmatrix}0,6 + 0,4\times 0,5^{n} & 0,6 - 0,6\times 0,5^{n} \\0,4 - 0,4\times 0,5^{n} & 0,4 + 0,6\times 0,5^{n}\end{pmatrix}.

Profitons-en pour rappeler les étapes du raisonnement par récurrence.

\textsuperscript{\textcircled{\tiny{1}}} Initialisation
Il s’agit de vérifier que la propriété est vraie au premier rang.

Ici, on nous demande de prouver l’inégalité « pour tout entier n ~\geq ~1 ». Il faut donc commencer par n = 1.

Initialisation
M = \begin{pmatrix}0,8 & 0,3 \\0,2 & 0,7\end{pmatrix}.
Or, pour n = 1 :
0,6 + 0,4\times 0,5^{n} = 0,6 + 0,4\times 0,5^{1} = 0,6 + 0,2 = 0,8
0,4 - 0,4\times 0,5^{n} = 0,4 - 0,4\times 0,5^{1} = 0,4 - 0,2 = 0,2
0,6 - 0,6\times 0,5^{n} = 0,6 - 0,6\times 0,5^{1} = 0,6 - 0,3 = 0,3
0,4 + 0,6\times 0,5^{n} = 0,4 + 0,6\times 0,5^{1} = 0,4 + 0,3 = 0,7
Donc, la propriété est vérifiée pour n = 1.
\textsuperscript{\textcircled{\tiny{2}}} Hérédité
Il s’agit de supposer que la propriété est vraie à un rang k (k appartenant au même ensemble que n, ici \mathbb{N}^{*}) et de montrer qu’elle est alors vraie au rang k + 1.
Hérédité
Soit k \in \mathbb{N}^{*}. Supposons que la propriété soit vraie au rang k, c’est-à-dire que
M^k = \begin{pmatrix}0,6 + 0,4\times 0,5^{k} & 0,6 - 0,6\times 0,5^{k} \\0,4 - 0,4\times 0,5^{k} & 0,4 + 0,6\times 0,5^{k}\end{pmatrix}.
Montrons alors qu’elle est vraie au rang k+1, c’est-à-dire que
M^{k+1} = \begin{pmatrix}0,6 + 0,4\times 0,5^{k+1} & 0,6 - 0,6\times 0,5^{k+1} \\0,4 - 0,4\times 0,5^{k+1} & 0,4 + 0,6\times 0,5^{k+1}\end{pmatrix}.

A chaque fois que l’on veut prouver une hérédité, il faut se demander :

  • soit, comment à partir de l’hypothèse de récurrence qui fait intervenir la propriété au rang k, je peux faire apparaître la propriété au rang k+1 ;
  • soit, à partir des éléments relatifs au rang k+1, comment je peux faire apparaître les éléments relatifs au rang k et me servir alors de l’hypothèse de récurrence.

Ici, nous allons opter pour la deuxième option et partir des éléments relatifs au rang k+1 pour faire apparaître les éléments relatifs au rang k et exploiter l’hypothèse de récurrence.

Pour cela, il faut d’abord se souvenir que :

Soit A une matrice carrée d’ordre n (c’est-à-dire comportant n lignes et n colonnes).
A^{n+1} = A^nA = AA^n

Donc, on peut écrire :

M^{k+1} = M^kM = \begin{pmatrix}0,6 + 0,4\times 0,5^{k} & 0,6 - 0,6\times 0,5^{k} \\0,4 - 0,4\times 0,5^{k} & 0,4 + 0,6\times 0,5^{k}\end{pmatrix}\begin{pmatrix}0,8 & 0,3 \\0,2 & 0,7\end{pmatrix}

Comme le suggère l’énoncé, nous n’allons détailler les calculs uniquement pour le premier coefficient :

Le premier coefficient de cette matrice vaut :
(0,6 + 0,4\times 0,5^{k}) \times 0,8 + (0,6 - (0,6\times 0,5^{k}) \times 0,2

Développons :

... = 0,6 \times 0,8 + 0,4\times 0,5^{k} \times 0,8 + 0,6 \times 0,2 - 0,6 \times 0,5^{k} \times 0,2

= 0,48 + 0,32 \times 0,5^{k} + 0,12 - 0,12 \times 0,5^{k}

= 0,6 + 0,2 \times 0,5^{k}

Hum, on n’obtient pas du tout le 0,6 + 0,4\times 0,5^{k+1} recherché, si ?

Figurez-vous qu’on n’est pas si loin du but. Il suffit de remarquer que 0,2 = 0,4 \times 0,5. Et là, tout s’arrange :

... = 0,6 + (0,4 \times 0,5) \times 0,5^k

= 0,6 + 0,4 \times 0,5^{k+1}

Hum, comment as-tu pensé à décomposer 0,2 en 0,4 \times 0,5 ?

Je voulais faire apparaître 0,5^{k+1} alors que je n’avais que 0,5^k. Je me suis donc dit : « Comment se fait-il que je ne trouve pas de 0,5 supplémentaire ? Et c’est là que j’ai trouvé la solution : « Eh mais attends ! 0,2, c’est 0,4 \times 0,5 : non seulement ça me fait apparaître un 0,5 supplémentaire, mais en plus, ça me fait également apparaître 0,4 que je recherche aussi ! ».

Mentionnons tout de même que si nous poursuivions les calculs, on trouverait les 3 autres coefficients cherchés :

De même, en poursuivant les calculs, on trouverait que :
M^{k+1} = \begin{pmatrix}0,6 + 0,4\times 0,5^{k+1} & 0,6 - 0,6\times 0,5^{k+1} \\0,4 - 0,4\times 0,5^{k+1} & 0,4 + 0,6\times 0,5^{k+1}\end{pmatrix}.

Donc l’hérédité est vérifiée :

Donc la propriété est vérifiée au rang k+1.
\textsuperscript{\textcircled{\tiny{3}}} Conclusion
Il s’agit de conclure en invoquant le principe de récurrence.
Conclusion
La propriété est vraie pour n = 1. En la supposant vraie au rang n = k, elle est encore vraie au rang n = k+1.
Ainsi, d’après le principe de récurrence, pour tout entier naturel n ~\geq ~1,
M^n = \begin{pmatrix}0,6 + 0,4\times 0,5^{n} & 0,6 - 0,6\times 0,5^{n} \\0,4 - 0,4\times 0,5^{n} & 0,4 + 0,6\times 0,5^{n}\end{pmatrix}.

Question 3

Exprimer a_n en fonction de n, pour tout entier naturel n \geq 1.

Pour répondre à cette question, il faut d’abord se souvenir d’une indication de l’énoncé :

On admet alors que U_n = M^nU_0 pour tout entier naturel n \geq 1.

Calculons donc U_n :

U_n = M^nU_0 = \begin{pmatrix}0,6 + 0,4\times 0,5^{n} & 0,6 - 0,6\times 0,5^{n} \\0,4 - 0,4\times 0,5^{n} & 0,4 + 0,6\times 0,5^{n}\end{pmatrix} \begin{pmatrix}a_0 \\b_0\end{pmatrix}

Or, a_0 (respectivement b_0) correspond au nombre d’oiseaux en millions présents sur l’île A (respectivement sur l’île B) l’année 2013 donc il faut poursuivre les calculs de la façon suivante :

... = \begin{pmatrix}0,6 + 0,4\times 0,5^{n} & 0,6 - 0,6\times 0,5^{n} \\0,4 - 0,4\times 0,5^{n} & 0,4 + 0,6\times 0,5^{n}\end{pmatrix} \begin{pmatrix}20 \\10\end{pmatrix}

= \begin{pmatrix}(0,6 + 0,4\times 0,5^{n}) \times 20 + (0,6 - 0,6\times 0,5^{n}) \times 10 \\(0,4 - 0,4\times 0,5^{n}) \times 20 + (0,4 + 0,6\times 0,5^{n}) \times 10\end{pmatrix}
= \begin{pmatrix}12 + 8\times 0,5^{n} + 6 - 6\times 0,5^{n} \\8 - 8\times 0,5^{n} + 4 + 6\times 0,5^{n}\end{pmatrix}
= \begin{pmatrix}18 + 2\times 0,5^{n} \\12 - 2\times 0,5^{n}\end{pmatrix}

Reste à en déduire a_n :

Or, U_n = \begin{pmatrix}a_n \\b_n\end{pmatrix} donc \begin{pmatrix}a_n \\b_n\end{pmatrix} = \begin{pmatrix}18 + 2\times 0,5^{n} \\12 - 2\times 0,5^{n}\end{pmatrix}.

Or :

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

On en déduit :

D’où a_n = 18 + 2\times 0,5^{n}.

Question 4

Avec ce modèle, peut-on dire qu’au bout d’un grand nombre d’années, le nombre d’oiseaux sur l’île A va se stabiliser ? Si oui, préciser vers quelle valeur.

Qui dit « au bout d’un grand nombre d’années » ici dit « calcul de la limite lorsque n tend vers +\infty. Vous l’aurez compris, il s’agit donc de calculer \lim\limits_{\substack{n \to +\infty}}~a_n ».

L’expression de (a_n) doit absolument faire penser à la portion de cours suivante :

\lim\limits_{\substack{n \to +\infty}}~q^n =\begin{cases}+\infty ~\text{si q ~\textgreater ~1} \\1 ~\text{si q = 1} \\0 ~\text{si -1 \textless ~q \textless ~1}\end{cases}

Muni de cela, le calcul de la limite de (a_n) devient évident :

-1 ~\textless ~0,5 ~\textless ~1 donc \lim\limits_{\substack{n \to +\infty}}~(0,5)^n = 0 d’où \lim\limits_{\substack{n \to +\infty}}~a_n = 18.

Ainsi, la conclusion de l’exercice est la suivante :

Avec ce modèle, au bout d’un grand nombre d’années, le nombre d’oiseaux sur l’île A va se stabiliser à 18 millions.

Fin de l’épreuve du Bac S 2013 Spé Maths Centres étrangers Exercice 4.

Exprimez vous!