Page 1 sur 1

Correction algorithme exo 1 BAC S 2018 (Métropole)

Message non luPosté: 22 Juin 2018, 14:16
de critor
Correction algorithme exercice n°1 du sujet de Maths du BAC S 2018 en Métropole :
https://toutmonexam.fr/epreuve.php?id=2829



Question 5a :
Programmons l'algorithme sur notre calculatrice graphique pour obtenir la réponse. Afin de pouvoir en justifier via la pseudo-trace de son exécution demandée, rajoutons une instruction d'affichage de l'état des variables et de leur différence en fin de boucle.


Algorithme
Programme
Code: Tout sélectionner
Tant que b-a>0,1 faire :
   m←(a+b)/2
   Si e^m+e^-m-4m-2>0, alors :
      b←m
   Sinon :
      a←m
   Fin Si
   Afficher m, a, b et b-a
Fin Tant que
Code: Tout sélectionner
Prompt A,B
While B-A>0.1
   (A+B)/2→M
   If e^(M)+e^(-M)-4M-2>0
   Then
      M→B
   Else
      M→A
   End
   Disp {M,A,B,B-A}
End

Code: Tout sélectionner
Define s18(a,b)=
Func
   Local m
   While b-a>0.1
      m:=(a+b)/2
      If e^m+e^-m-4≤∙m-2>0 Then
         b:=m
      Else
         a:=m
      EndIf
      Disp m,a,b,b-a
   EndWhile
EndFunc

Code: Tout sélectionner
?→A
?→B
While B-A>0.1
   (A+B)÷2→M
   If e^M+e^-M-4M-2>0
   Then
      M→B
   Else
      M→A
   IfEnd
   {M,A,B,B-A}◢
WhileEnd


Code: Tout sélectionner
from math import *
def s18(a,b):
   while b-a>0.1:
      m=(a+b)/2
      if exp(m)+exp(-m)-4*m-2>0:
         b=m
      else:
         a=m
      print(m,a,b,b-a)


Code: Tout sélectionner
SetDecimal
While b-a>0.1
   m:=(a+b)/2
   If e^m+e^-m-4m-2>0
   Then
      b:=m
   Else
      a:=m
   IfEnd
   Print {m,a,b,b-a}
WhileEnd
Code: Tout sélectionner
EXPORT S18(a,b)
BEGIN
   WHILE a-b>0.1 DO
      M:=(A+B)/2;
      IF EXP(M)+EXP(-M)-4*M-2>0 THEN
         b:=M
      ELSE
         a:=M
      END;
      PRINT({M,a,b,b-a});
   END;
END;
Code: Tout sélectionner
#cas
def s18(a,b):
   while b-a>0.1:
      m=(a+b)/2
      if exp(m)+exp(-m)-4*m-2>0:
         b=m
      else:
         a=m
      print(m,a,b,b-a)
#end
Code: Tout sélectionner
from math import *
def s18(a,b):
   while b-a>0.1:
      m=(a+b)/2
      if exp(m)+exp(-m)-4*m-2>0:
         b=m
      else:
         a=m
      print(m,a,b,b-a)


Voici donc la trace d'exécution de l'algorithme démandée :
mabb-a
231
2,522,50,5
2,252,252,50,25
2,3752,3752,50,125
2,43752,43752,50,0625

En fin d'algorithme, les variables a et b contient donc respectivement 2,4375 et 2,5.

Re: Correction algorithme exo 1 BAC S 2018 (Métropole)

Message non luPosté: 22 Juin 2018, 14:20
de critor
Remarque : comme le Python sur HP Prime nécessite le contexte CAS, on est embêté à obtenir des affichages sous forme exacte :
ImageImage

C'est un plus que ce soit géré, mais là il se trouve que l'on ne veut pas, et que j'ai donc validé l'exécution avec
Shift
Enter
, signifiant donc que je voulais des écritures décimales.
Choix visiblement ignoré, c'est dommage.

Re: Correction algorithme exo 1 BAC S 2018 (Métropole)

Message non luPosté: 22 Juin 2018, 14:24
de critor
Remarque suite à ma première série de corrections d'algorithmes tenant compte par anticipation des textes sur les fonctions et le Python.

Pour l'aspect mathématique je trouve qu'on perd énormément à imposer le Python, particulièrement dans ce sujet.

Les langages de programmation des calculatrices que certains étaient si prompts à mépriser, ainsi que leurs éditeurs associés avaient l'avantage de cibler le contexte mathématique/scolaire. On pouvait donc avoir selon les modèles :
  • des affichages exacts
  • des affichages en écriture naturelle
  • de la saisie en écriture naturelle sur la ligne d'appel
  • de la saisie en écriture naturelle dans l'éditeur de programmes
Avec le Python, on perd tout ça. :(