Page 1 of 2

Correction algo BAC S 2013 (Nouvelle Calédonie - mars 2014)

Unread postPosted: 09 Mar 2014, 22:37
by critor
Voici déjà ce soir la correction de l'algorithme tombé dans le 13ème et dernier sujet de Maths du BAC S 2013: Nouvelle Calédonie, mars 2014.


L'exercice n°3 concerné sur 5 points et donc à traiter en un maximum d'1 heure, commençait par une petite étude de fonction en partie A:


On retiendra juste de cette partie pour la suite que la fonction f est strictement croissante sur ]e-1;+∞[.

Et voici donc la partie B avec l'algorithme, sur la méthode des rectangles pour l'approximation d'une intégrale:



Question B)1)a)
On sait que l'algorithme est destiné à estimer l'intégrale par la méthode des rectangles.
En partant de l'initialisation U=V=0, à chaque itération U est incrémenté de
$mathjax$\frac{1}{n}f\left(1+\frac{k}{n}\right)$mathjax$
et V est incrémenté de
$mathjax$\frac{1}{n}f\left(1+\frac{k+1}{n}\right)$mathjax$
.
Or, comme e-1≤1, f est strictement croissante sur [1;2].
$mathjax$f\left(1+\frac{k}{n}\right)≤f\left(1+\frac{k+1}{n}\right)$mathjax$
et donc
$mathjax$\frac{1}{n}f\left(1+\frac{k}{n}\right)≤\frac{1}{n}f\left(1+\frac{k+1}{n}\right)$mathjax$
.
Ce qui implique à tout moment dans l'algorithme l'invariant U≤V.

U représente donc l'approximation de l'intégrale par les rectangles inférieurs, soit l'aire des rectangles hachurés deux fois.
V représente donc l'approximation de l'intégrale par les rectangles supérieurs, soit l'aire de tous les rectangles hachurés.


Question B)1)b)
Si l'on a parfaitement compris ce que faisait l'algorithme à la question précédente, la réponse est ici simple au sens où il suffit de faire un simple calcul que l'on retrouve si besoin en observant le graphe donné avec l'énoncé:
$mathjax$U=\frac{1}{4}\left(f(1)+f\left(\frac{5}{4}\right)+f\left(\frac{3}{2}\right)+f\left(\frac{7}{4}\right)\right)\approx0,4666$mathjax$

$mathjax$V=\frac{1}{4}\left(f\left(\frac{5}{4}\right)+f\left(\frac{3}{2}\right)+f\left(\frac{7}{4}\right)+f(2)\right)\approx0,8132$mathjax$


Si l'on n'a pas ces résultats ou si l'on en doute, il va donc falloir exécuter l'algorithme.
Notons que cet algorithme utilise une fonction f qu'il ne définit pas.

Lors de la traduction en un programme pour calculatrice graphique, il va falloir en tenir compte, et:
  • soit remplacer toutes les occurrences de f par l'expression associée
  • soit définir la fonction dans l'application de la calculatrice dédiée à cette tâche avant de lancer le programme
  • soit définir la fonction au sein du programme
Nous nous intéresserons ici à ce dernier cas, et rajouterons donc aux initialisations la définition de cette fonction f.

Pour définir une fonction dans un programme sur TI-76/82/83/84, nous allons utiliser l'instruction String>Equ( que l'on peut aller chercher dans la catalogue: :f21: :f102:
Nous y définirons Y1 en fonction de X. Mais le langage de programmation étant procédural et non fonctionnel, pour chaque calcul d'image il faudra donc affecter X avant d'évaluer Y1:
Image Image
L'on confirme bien les résultats précédents.

Sur Casio Graph/fx-CG, l'utilisation d'une fonction définie dans le programme est assez similaire.
ImageImage

Sur Casio Classpad/fx-CP (ci-contre), nous avons vraiment la notion de fonction dans un programme, et la définition et l'utilisation n'en sont que bien plus naturelles.
Nous préciserons toutefois en début de programme que l'on souhaite travailler en écriture décimale avec 'SetDecimal'. Sans cela, la calculatrice utilisera le dernier mode de l'évaluateur de programmes, et affichera possiblement des valeurs exactes que l'on ne demande pas ici.

Mêmes compliments pour le langage de programmation fonctionnel de la TI-Nspire/89/92/Voyage.
Ici, nous devons effectuer le lancement du programme en validant avec :nsct: :nsen: sur les modèles formels, afin de bien obtenir des affichages en écriture décimale et non exacte:
Image Image

Sur HP-39gII/Prime, il existe au moins trois façons de définir une fonction dans un programme. La plus simple, qui de plus a l'avantage de marcher sur les deux modèles me semble toutefois être la suivante:
Image


Question B)1)c)
f(1)=1ln(1)=1×0=0
Or, f est strictement croissante sur [1;2] d'après B)1)a).
Donc, pour tout
$mathjax$x\in[1;2]$mathjax$
, f(x)≥f(1) soit f(x)≥0.
Dans ces conditions,
$mathjax$A=\int_1^2f(x)dx$mathjax$
.
L'encadrement de l'intégrale par la méthode des rectangles est donc aussi un encadrement de l'aire.
0,4666≤A≤0,8132


Voici maintenant la suite de l'exercice:


Question B)2)a)
$mathjax$\begin{align*}V_n-U_n&=\frac{1}{n}\left(f\left(1+\frac{1}{n}\right)+f\left(1+\frac{2}{n}\right)+...+f\left(1+\frac{n-1}{n}\right)+f(2)\right)-\frac{1}{n}\left(f(1)+f\left(1+\frac{1}{n}\right)+f\left(1+\frac{2}{n}\right)+...+f\left(1+\frac{n-1}{n}\right)\right)\\
&=\frac{1}{n}\left(f\left(1+\frac{1}{n}\right)+f\left(1+\frac{2}{n}\right)+...+f\left(1+\frac{n-1}{n}\right)+f(2)-f(1)-f\left(1+\frac{1}{n}\right)-f\left(1+\frac{2}{n}\right)-...-f\left(1+\frac{n-1}{n}\right)\right)\\
&=\frac{1}{n}\left(f(2)-f(1)\right)\\
&=\frac{1}{n}\left(2\ln(2)-1\ln(1)\right)\\
&=\frac{1}{n}\left(2\ln(2)-1×0\right)\\
&=\frac{1}{n}\left(2\ln(2)-0\right)\\
&=\frac{1}{n}\left(2\ln(2)\right)\\
&=\frac{2\ln(2)}{n}\end{align*}$mathjax$

Donc:
$mathjax$V_n-U_n<0,1\Leftrightarrow\frac{2\ln(2)}{n}<0,1\Leftrightarrow2\ln(2)<0,1n$mathjax$
car n≥0
$mathjax$\Leftrightarrow\frac{2\ln(2)}{0,1}<n\Leftrightarrow n>\frac{2\ln(2)}{0,1}$mathjax$

Or,
$mathjax$\frac{2\ln(2)}{0,1}\approx 13,9$mathjax$
d'après la calculatrice.
Donc n≥14.
Le plus petit entier n vérifiant la propriété est donc 14.


Question B)2)b)
Voici une modification possible de l'algorithme:
La boucle 'pour' permettant de calculer l'encadrement, pour rechercher un encadrement avec V-U<0,1, nous allons la répéter tant que cette condition n'est pas satisfaite (V-U≥0,1).
A chaque itération de cette boucle tant que, on incrémente donc n et réinitialise les variables U et V pour pouvoir faire le calcul.
Plus rien n'étant connu sur n, on l'initialise à 0.
Nous initialiserons de plus V à 1, astuce pour garantir que l'on passe au moins une fois dans la boucle tant que suivante (car V-U=1-0=1≥0,1).
Code: Select all
Variables
   k et n sont des entiers naturels
   U, V sont des nombres réels
Initialisation
   U prend la valeur 0
   V prend la valeur 1 (*)
   n prend la valeur 0 (*)
Traitement
   [color=red]Tant que V-U≥0,1
      U prend la valeur 0 (*)
      V prend la valeur 0 (*)
      n prend la valeur n+1 (*)
      Pour k allant de 0 à n-1
         Affecter à U la valeur 
         Affecter à V la valeur 
      Fin pour
   Fin tant que (*)
Affichage
   Afficher U
   Afficher V
(*) lignes modifiées

Ce n'était pas demandé, mais pour savoir si notre algorithme modifié faisait bien ce que l'on voulait, il était bienvenu de le programmer sur la calculatrice encore une fois. De plus, cela pourra permettre de vérifier la cohérence des résultats en fin d'exercice.
On va même en profiter pour rajouter l'affichage de N en fin de programme.

Voici donc des programmes pour TI-76/82/83/84, TI-Nspire/89/92/Voyage, Casio Graph/fx-CG, HP-39gII/Prime et Casio Classpad/fx-CP:
Image Image Image Image

Les programmes se terminent sur calculatrice pour n=14 en fournissant 0,5870≤A≤0,6861, qui est bien une restriction de l'encadrement en B)1)c) d'amplitude inférieure à 0,1.



L'exercice n'est pas tout-à-fait terminé, mais pour les algorithmes, c'est bien fini.
Par rapport aux 'amusements' que nous avions habituellement sur les suites au BAC, c'est donc un algorithme bien plus difficile, surtout si on devait le programmer sur calculatrice, avec cette utilisation d'une fonction dans un programme, cas possiblement jamais rencontré auparavant. Merci d'ailleurs à Planete-Casio à ce sujet.
Si la programmation sur calculatrice pouvait facilement être évitée pour la première question d'algorithme où l'on pouvait aisément répondre autrement, c'était beaucoup moins le cas pour la deuxième question d'algorithme...
Au final, un exercice que je juge difficile de ce point de vue.



Téléchargement : Annales BAC S 2014 - sujets inédits 2013-2014

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 10 Mar 2014, 19:01
by cpierquet
Je suis d'accord avec le fait que le traitement du deuxième algorithme est un peu particulier... Il m'a laissé (et me laisse encore) perplexe, j'avoue que j'ai essayé de me placer côté élève (avec les algorithmes type vus en TS) et j'ai eu du mal à trouver une démarche efficace et simple...

J'ai tout d'abord pensé à un test après le calcul du U et V (si l'écart est >0,1) puis un LBL GOTO pour recommencer ; une sorte de boucle TANTQUE déguisée car il y avait un problème pour rentrer dans la boucle sinon...

algo_ts_ncmars2k14.png


algo_ts_ncmars2k14_exec.png


Ensuite j'ai pensé comme présenté ici à initialiser V avant arbitrairement pour forcer la rentrée dans la boucle, mais je ne pense pas que les élèves (en majorité) sont à même de gérer une telle subtilité...

Donc idem, je trouve la deuxième partie algorithmique pas évidente du tout...

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 10 Mar 2014, 19:49
by critor
Ah merci de venir m'apporter un petit peu d'aide.

Peut-être y a-t-il une solution simple, mais perso, j'ai beau y penser, je ne la vois pas.

En effet, la boucle 'tant que' vue au lycée effectue le test avant la 1ère itération.
(sinon, une boucle "faire ... tant que" ou "répéter ... tant que" aurait été plus appropriée)


On peut 'contourner' ce problème d'initialisation 'bizarre' avec une valeur quelconque en initialisant aux résultats de la 1ère itération:
Code: Select all
Initialisation:
   U prend la valeur f(1)
   V prend la valeur f(2)
   N prend la valeur 1
Traitement:
   ...


Là on ne choque pas l'élève au sens où on n'initialise pas à n'importe quoi.
Je ne l'ai pas proposé car ce me déplaisait sur le critère de la "factorisation de code".
En gros, on fait artificiellement le travail de la 1ère itération...


Le 'goto' est en effet une bonne idée d'approche sur la calculatrice, pour y simplifier ce programme nécessitant des boucles imbriquées.
Par contre, nous n'avons pas d'instruction 'goto' en algorithmique, donc si ça nous aide à comprendre, ça n'aidera pas à répondre quelque chose de correct sur la copie.



Bref du point de vue programme officiel et élève, cette partie reste encore un grand mystère pour moi...

Je doute au final que grand monde ait produit une réponse correcte.
Mais bon c'est une question de fin de partie, qui doit valoir un demi-point, et dont la réponse n'est pas essentielle à la réalisation de la partie C.
Certes ceux qui avaient réalisé le programme obtenaient un meilleur encadrement permettant de conforter une des réponses en partie C, mais il y avait bien d'autres moyens de la vérifier.

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 10 Mar 2014, 20:44
by cpierquet
Il serait effectivement intéressant d'avoir un retour sur les consignes de correction (mais confidentielles...) sur cette question, effectivement il ne devait pas y avoir trop de points là-dessus mais par rapport aux algorithmes déjà tombés cela sort de "l'ordinaire" et cela montre d'autres axes pour la fin d'année, quoiqu'il y ait déjà du boulot sur les algorithmes de base !!

J'ai sollicité des collègues pour qu'ils jettent un œil sur cet algorithme, donc peut-être qu'à plusieurs on aura une réponse simple niveau TS ;-)

Affaire à suivre, avec notamment les sujets de Pondichéry, Liban, etc...

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 10 Mar 2014, 20:48
by Bisam
Euh, je suis peut-être un peu terre-à-terre, mais moi, je modifierais uniquement la ligne d'affectation de n en changeant la valeur à n=14, puisque on vient de calculer que c'est pour n=14 que l'on obtient la bonne réponse !

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 10 Mar 2014, 21:18
by critor
Effectivement... En question B)2)c), remplacer 4 par le 14 venant de la question B)2)b), permet de répondre à la question dans le contexte de cet exercice, et me être une interprétation acceptable devant la formulation de la question.
De plus, cela rentre dans la logique d'utilisation du résultat de la question précédente fort présente au BAC.

Si c'est ça, la question B)2)c) passerait du statut de la question d'algo la plus compliquée du BAC S 2013, à celui de la question d'algo la plus simple... :P


Peut-être pour ça que je n'y ai même pas pensé.
Bisam, tu es génial ! ;)

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 11 Mar 2014, 17:15
by DoOmnimaga
Off-topic, mais ici, est-ce-qu'un seul set de 4 piles AAA est assez pour que la ClassPad II ait le temps d'afficher le résultat, contrairement au programme d'une certaine news le printemps passé? :troll:

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 11 Mar 2014, 17:59
by critor
Je me posais justement la question avant de lancer le programme, mais visiblement non.

Ca reste assez lent comparé aux autres calculatrices, mais l'attente est raisonnable: une 15aine de secondes.

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 29 Mar 2014, 14:40
by fakeith
Bonjour,
Pourriez vous m'aider à exécuter cet algorithme sur deux calculatrices : Ti 82 et Ti 89
Sur la 82 j'y arrive mais je ne sais comment, les valeurs de U et V sont différentes et donc fausses.
La 89 est plus compliquée je ne la maitrise pas très bien et je n'arrive même pas à obtenir ne serait ce qu'un résultat.
Merci d'avance :D

Re: Correction algo BAC S 2013 (Nouvelle Calédonie - mars 20

Unread postPosted: 29 Mar 2014, 15:24
by critor
Bonjour.

Quel est l'algorithme que tu tentes de programmer? Celui de ce sujet ?

De mémoire il me semble qu'il suffit de saisir le code pour TI-Nspire sur ta TI-89 et ça devrait marcher.
Les deux modèles utilisent un langage Basic fonctionnel très similaire.