Correction algo BAC ES/L (Nouvelle Calédonie - mars 2014)
Posted: 12 Mar 2014, 21:01
Voici ce soir la correction de l'algorithme tombé à l'épreuve de Mathématiques commune aux BAC ES et L 2013, ce mois-ci en Nouvelle Calédonie (mars 2014).
Il s'agit de l'exercice 4 noté sur 5 points, et donc à traiter de préférence en moins de 45 minutes:
Question 5)a)
On nous demande donc une espèce de trace de l'algorithme, présenter l'état des variables au cours de son exécution.
Il va donc nous falloir d'une façon ou d'une autre évaluer cet algorithme.
Le tableau fourni à compléter suggère qu'il y a 3 passages dans la boucle représentés par 3 étapes en plus de l'initialisation.
Habituellement, chaque étape représente ou l'état en fin de boucle, ou l'état en début de boucle.
Or, ce n'est pas le cas ici... Ce tableau est en effet assez étrange, au sens où les valeurs présentées dans les cinq premières colonnes sont calculées non pas à partir des valeurs de a et b de la même étape mais de celles de l'étape précédente.
L'état décrit par une ligne de ce tableau correspond donc à un état intermédiaire en milieu de boucle, lorsque l'on a effectué les calculs des 4 premières colonnes mais pas encore modifié les valeurs de a et b.
Si on a pu déterminer cet endroit exact, l'intérêt est que l'on peut donc demander directement à notre calculatrice graphique de nous sortir le tableau, en modifiant l'algorithme avec un affichage au bon endroit:
Il faudra juste prendre soin sur notre calculatrice de définir la fonction f. Cela peut être fait directement dans le code du programme, solution que je présente ci-après. Mais on peut aussi parfaitement définir la même fonction dans l'application dédiée de la calculatrice, avant de lancer le programme.
Sur TI-76/82/83/84, nous utiliserons Y1 variable système spéciale pouvant recevoir l'expression d'une fonction.
Toutefois, cette variable n'est pas une fonction pour autant pour la calculatrice: f(5) ne s'obtient pas en tapant Y1(5) qui est une simple multiplication pour la calculatrice, mais en affectant la variable de la fonction pour ensuite faire appel à son expression.
Nous avons en prime une commande sympa nous permettant d'effectuer en même temps l'arrondi demandé par l'énoncé.
Les tests afficheront 1 lorsqu'ils seront vrais, et 0 lorsque faux.
Enfin, l'affichage de l'état intermédiaire étant très long, nous remplacerons l'instruction usuelle 'Disp' par 'Pause', qui comme son nom l'indique permet de suspendre le programme mais aussi de permettre à l'utilisateur de faire défiler le résultat.
Voici ce que ça nous donne:
Sur Casio Graph/fx-CG, nous ferons quasiment les mêmes remarques. C'est le même genre de langage non-fonctionnel, à la différence que je ne crois pas qu'il existe d'instruction pour arrondir.
Afin de limiter le nombre de captures d'écrans, je mets parfois plusieurs instructions sur une même ligne de code, séparées par le symbole deux-points. Vous pouvez parfaitement aller à la ligne à la place.
Sur TI-Nspire/89/92/Voyage, nous avons enfin la notion de fonction, mais aussi de tests.
Donc plus besoin d'affecter la variable de la fonction avant d'y faire appel, et les tests afficheront en anglais true/false.
On peut à nouveau arrondir directement dans le programme.
Sur Casio Classpad/fx-CP c'est presque pareil, à part que lorsque l'on veut afficher le résultat d'un test il faut en forcer l'évaluation à l'aide de la fonction 'judge'.
Comme sur les Casio ci-dessus, je ne connais pas de moyen rapide ou simple d'arrondir directement dans le programme.
Enfin sur HP-39gII/Prime, il y a plusieurs façons de définir une fonction. J'en retiens une qui a l'avantage de fonctionner sur les deux modèles en faisant appel à la variable système F1.
Et là, nous pouvons à nouveau arrondir correctement:
D'où le tableau final, à compléter à partir des résultats affichés dans le sens de lecture, de gauche à droite et de haut en bas, en commençant à la 1ère ligne avant-dernière colonne:
On confirme d'ailleurs que ce tableau tel que demandé n'est pas très logique, puisque la colonne f(m)>0 ne sert à rien, étant toujours à vrai.
Question 5)b)
Cet algorithme effectue par dichotomie un encadrement de la solution α de l'équation f(x)=0, sur l'intervalle [3;3,05] de la question 4)d).
Il s'articule autour d'une boucle "tant que" ayant pour condition de poursuite b-a>r.
La sortie de boucle fait donc suite à la réalisation de la condition contraire: b-a≤r, c'est-à-dire b-a≤0,01.
L'algorithme recherche donc un encadrement de α d'amplitude inférieure à 0,01 et donc plus précis, qui est ici 3,04375≤α≤3,05.
Téléchargements :
Il s'agit de l'exercice 4 noté sur 5 points, et donc à traiter de préférence en moins de 45 minutes:
Question 5)a)
On nous demande donc une espèce de trace de l'algorithme, présenter l'état des variables au cours de son exécution.
Il va donc nous falloir d'une façon ou d'une autre évaluer cet algorithme.
Le tableau fourni à compléter suggère qu'il y a 3 passages dans la boucle représentés par 3 étapes en plus de l'initialisation.
Habituellement, chaque étape représente ou l'état en fin de boucle, ou l'état en début de boucle.
Or, ce n'est pas le cas ici... Ce tableau est en effet assez étrange, au sens où les valeurs présentées dans les cinq premières colonnes sont calculées non pas à partir des valeurs de a et b de la même étape mais de celles de l'étape précédente.
L'état décrit par une ligne de ce tableau correspond donc à un état intermédiaire en milieu de boucle, lorsque l'on a effectué les calculs des 4 premières colonnes mais pas encore modifié les valeurs de a et b.
Si on a pu déterminer cet endroit exact, l'intérêt est que l'on peut donc demander directement à notre calculatrice graphique de nous sortir le tableau, en modifiant l'algorithme avec un affichage au bon endroit:
- Code: Select all
Variables:
a,b,m et r sont des nombres réels
Initialisation:
Affecter à a la valeur 3
Affecter à b la valeur 3,05
Entrée:
Saisir r
Traitement:
TANT QUE b-a>r
Affecter à m la valeur (a+b)/2
Afficher b-a, b-a>r, m, f(m), f(m)>0, a, b (*)
SI f(m)>0
ALORS Affecter à a la valeur m
SINON Affecter à b la valeur m
FIN SI
FIN TANT QUE
Sortie:
Afficher a
Afficher b
Il faudra juste prendre soin sur notre calculatrice de définir la fonction f. Cela peut être fait directement dans le code du programme, solution que je présente ci-après. Mais on peut aussi parfaitement définir la même fonction dans l'application dédiée de la calculatrice, avant de lancer le programme.
Sur TI-76/82/83/84, nous utiliserons Y1 variable système spéciale pouvant recevoir l'expression d'une fonction.
Toutefois, cette variable n'est pas une fonction pour autant pour la calculatrice: f(5) ne s'obtient pas en tapant Y1(5) qui est une simple multiplication pour la calculatrice, mais en affectant la variable de la fonction pour ensuite faire appel à son expression.
Nous avons en prime une commande sympa nous permettant d'effectuer en même temps l'arrondi demandé par l'énoncé.
Les tests afficheront 1 lorsqu'ils seront vrais, et 0 lorsque faux.
Enfin, l'affichage de l'état intermédiaire étant très long, nous remplacerons l'instruction usuelle 'Disp' par 'Pause', qui comme son nom l'indique permet de suspendre le programme mais aussi de permettre à l'utilisateur de faire défiler le résultat.
Voici ce que ça nous donne:
Sur Casio Graph/fx-CG, nous ferons quasiment les mêmes remarques. C'est le même genre de langage non-fonctionnel, à la différence que je ne crois pas qu'il existe d'instruction pour arrondir.
Afin de limiter le nombre de captures d'écrans, je mets parfois plusieurs instructions sur une même ligne de code, séparées par le symbole deux-points. Vous pouvez parfaitement aller à la ligne à la place.
Sur TI-Nspire/89/92/Voyage, nous avons enfin la notion de fonction, mais aussi de tests.
Donc plus besoin d'affecter la variable de la fonction avant d'y faire appel, et les tests afficheront en anglais true/false.
On peut à nouveau arrondir directement dans le programme.
Sur Casio Classpad/fx-CP c'est presque pareil, à part que lorsque l'on veut afficher le résultat d'un test il faut en forcer l'évaluation à l'aide de la fonction 'judge'.
Comme sur les Casio ci-dessus, je ne connais pas de moyen rapide ou simple d'arrondir directement dans le programme.
Enfin sur HP-39gII/Prime, il y a plusieurs façons de définir une fonction. J'en retiens une qui a l'avantage de fonctionner sur les deux modèles en faisant appel à la variable système F1.
Et là, nous pouvons à nouveau arrondir correctement:
D'où le tableau final, à compléter à partir des résultats affichés dans le sens de lecture, de gauche à droite et de haut en bas, en commençant à la 1ère ligne avant-dernière colonne:
b-a | b-a>r | m | f(m) | f(m)>0 | a | b | |
Initialisation | 3 | 3,05 | |||||
étape 1 | 0,05 | vrai | 3,025 | 0,485 | vrai | 3,025 | 3,05 |
étape 2 | 0,025 | vrai | 3,0375 | 0,218 | vrai | 3,0375 | 3,05 |
étape 3 | 0,0125 | vrai | 3,04375 | 0,082 | vrai | 3,04375 | 3,05 |
Question 5)b)
Cet algorithme effectue par dichotomie un encadrement de la solution α de l'équation f(x)=0, sur l'intervalle [3;3,05] de la question 4)d).
Il s'articule autour d'une boucle "tant que" ayant pour condition de poursuite b-a>r.
La sortie de boucle fait donc suite à la réalisation de la condition contraire: b-a≤r, c'est-à-dire b-a≤0,01.
L'algorithme recherche donc un encadrement de α d'amplitude inférieure à 0,01 et donc plus précis, qui est ici 3,04375≤α≤3,05.
Téléchargements :