Corrigé de l’algorithme du bac S septembre 2014

samedi 27 septembre 2014
par  Alain BUSSER

Cet article est dédié à tous les collègues, anciens collègues, amis, membres de la famille, et surtout anciens élèves qui ont subi à un moment où un autre (mais surtout trop tôt, particulièrement les élèves) une chimiothérapie. En effet c’est sur ce sujet que porte l’exercice 3 du bac S session de septembre 2014 :

On administre à un patient un médicament par injection intraveineuse. La quantité
de médicament dans le sang diminue en fonction du temps.
Le but de l’exercice est d’étudier pour différentes hypothèses, l’évolution de cette
quantité minute par minute.

Premier protocole

On effectue à l’instant 0 une injection de 10 mL de médicament. On estime
que 20% du médicament est éliminé par minute. Pour tout entier naturel n,
on note un la quantité de médicament, en mL, restant dans le sang au bout de n
minutes. Ainsi u0=10.

En fait, puisque diminuer de 20 % revient à multiplier par la raison 0,8, la suite est géométrique et tend vers 0 :

image/svg+xml 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10

Pour programmer cette suite en Sophus, pas besoin de parler de multiplication ou de raison :

Le script à copier-coller

On peut tester dans l’interpréteur sophus (en ligne ou hors ligne)

médicament = new Variable 10
minutes = new Variable 0
(0.01).tantQuePlusPetitQue médicament, ->
    diminuer médicament, de, 20, pourcents
    incrémenter minutes
montrer minutes

Ci-dessous un mini interpréteur en ligne pour tester sur place.

Pour savoir combien de temps il faut pour que la quantité de médicament descende en-dessous de 0,01 mL, cliquer sur le bouton ci-dessous :


Deuxième protocole

Une machine effectue à l’instant 0 une injection de 10 mL de médicament.
On estime que 20% du médicament est éliminé par minute. Lorsque la quantité de médicament tombe en-dessous de 5 mL, la machine réinjecte 4 mL de produit.
Au bout de 15 minutes, on arrête la machine.

Maintenant la suite oscille :

image/svg+xml 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10

Le script Sophus est une petite modification du précédent, avec un test dans la boucle :

Le script à copier-coller

Pour tester soit dans l’interpréteur sophus, soit dans un des interpréteurs de cet article (au choix !) :

médicament = nouvelle Variable 10
15 fois faire
    diminuer médicament de 20 pourcents
    Si médicament.valeur < 5
        augmenter médicament  de  4
    montrer médicament

Et voici la variante proposée ci-dessous, avec un tableau :

médicament = nouvelle Variable 10
tableau = [10]
15 fois faire
    diminuer médicament de 20 pourcents
    Si médicament.valeur < 5
        augmenter médicament de 4
    tableau.empiler médicament.valeur
montrer tableau

Le problème est que l’instruction « montrer médicament » est effectuée 15 fois ce qui fatigue un peu sur la fin. Alors on peut compliquer légèrement le script, en créant un tableau contenant initialement le nombre 10, et en empilant au fur et à mesures les valeurs successives prises par la variable médicament :

Voici la version en ligne, à tester :

On constate que sophus affiche ses variables en « locale », soit, en français, avec une virgule au lieu du point décimal, et arrondi systématiquement à trois décimales. Néanmoins, on continuera dans la suite de l’article à manipuler des tableaux, ne serait-ce que lorsqu’il y a 30 valeurs à afficher (voir ci-dessous) !

Pour connaître la quantité totale de médicament injecté, on crée une variable somme que l’on augmente à chaque passage dans la boucle, de la quantité de médicament présente :

le script à copier-coller

médicament = new Variable 10
somme = new Variable 10
15.foisFaire ->
    diminuer médicament, de, 20, pourcents
    si médicament.valeur < 5, ->
        augmenter médicament, de, 4
    augmenter somme, de, médicament
montrer somme

Pour tester en ligne, encore un interpréteur sophus ; il n’y a plus qu’à cliquer, merci qui ? Merci Sophus !


Troisième protocole

On souhaite programmer la machine afin qu’elle injecte 2 mL de produit
lorsque la quantité de médicament dans le sang est inférieure ou égale à
6 mL et qu’elle s’arrête au bout de 30 minutes.

En fait il ne s’agit que de tester la capacité des élèves à modifier un algorithme pour l’adapter à ses besoins. Il suffit donc de modifier l’un des scripts précédents pour avoir la réponse. Cependant, la représentation graphique montre que les oscillations de la suite sont plus chaotiques maintenant :

image/svg+xml 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 0 1 2 3 4 5 6 7 8 9 10

Le script devient celui-ci :

Pour les paresseux

médicament = nouvelle Variable 10
tableau = [10]
30 fois faire
    diminuer médicament de 20 pourcents
    Si médicament.valeur < 6
        augmenter médicament de 2
    tableau.empiler médicament.valeur
montrer tableau

Quatrième protocole

On programme la machine de façon que :
— à l’instant 0, elle injecte 10 mL de médicament,
— toutes les minutes, elle injecte 1 mL de médicament.
On estime que 20% du médicament présent dans le sang est éliminé par mi-
nute.

Ce protocole est donc plus simple que les précédents puisqu’il ne comporte plus de test, les injections étant systématiques. Du coup, la suite converge :

image/svg+xml 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 1 2 3 4 5 6 7 8 9 10

On peut donc rédiger le nouveau script en enlevant les tests des scripts précédents :

Mais puisque l’augmentation est toujours de 1 mL, et que tous les nombres (pas seulement les entiers) peuvent être incrémentés, on peut encore simplifier le script :

Pour copier-coller

médicament = nouvelle Variable 10
tableau = [10]
15 fois faire
    diminuer médicament de 20 pourcents
    augmenter médicament de 1
    tableau.empiler médicament.valeur
montrer tableau

et la version simplifiée :

médicament = nouvelle Variable 10
tableau = [10]
15 fois faire
    diminuer médicament de 20 pourcents
    incrémenter médicament
    tableau.empiler médicament.valeur
montrer tableau

Pour tester en ligne, voici un quatrième interpréteur sophus :


Les scripts des figures

Les figures de l’article ont été faite avec alcoffeethmique ; les voici, en CoffeeScript :

  • représentation graphique de la suite géométrique :
u = [10]
for n in [1..15]
    med = u[n-1]*.8
    u.push med
   
dessineSuite u, 15, 0, 10, 3, 'red'
  • représentation graphique de la suite donnée algorithmiquement :
u = [10]
for n in [1..15]
    med = u[n-1]*.8
    med += 4 if med < 5
    u.push med
   
dessineSuite u, 15, 0, 10, 3, 'red'
  • représentation graphique de la variante de cette suite :
u = [10]
for n in [1..30]
    med = u[n-1]*.8
    med += 2 if med < 6
    u.push med
dessineSuite u, 30, 0, 10, 3, 'blue'
  • représentation graphique de la suite arithmético-géométrique :
u = [10]
for n in [1..15]
    med = u[n-1]*.8
    med++
    u.push med
dessineSuite u, 15, 0, 10, 3, 'magenta'

Commentaires

Annonces

Prochains rendez-vous de l’IREM

Séminaire EDIM-IREM

- Mercredi 22 novembre 2017, 14h-18h, campus du Tampon, amphi 120 D
- Mercredi 7 février 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 7 mars 2018, 14h-18h, campus du Tampon
- Mercredi 4 avril 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 2 mai, 14h-18h, campus du Tampon
- Mardi 5 juin 2018, PTU, Saint-Denis, salle S23.6
- Mercredi 6 juin, 14h-18h, campus du Tampon

Fête de la science

Campus du Moufia, 16 et 17 novembre 2017.
Thème : « La recherche à l’heure du numérique »

Semaine des mathématiques

Du 26 au 31 mars 2018.
Thème : « Mathématiques et mouvement »


Brèves

Décès de Roger Mohr

mardi 27 juin

On sait bien que Nicolas Bourbaki n’était pas le nom d’une personne mais le pseudonyme d’un groupe. L’équivalent en informatique théorique est Claude Livercy, auteur de la théorie des programmes. Roger Mohr était un des membres de Claude Livercy.

À travers les labyrinthes : algorithmes et fourmis

dimanche 1er septembre 2013

Quand les chercheurs mettent au point des modèles d’optimisation et de recherche de plus court chemin qui s’inspirent du comportement de masse de colonies de fourmis...
À écouter : Sur les Épaules de Darwin, émission diffusée sur France Inter samedi 31 août 2013.

Rencontres Mondiales du Logiciel Libre à St-Joseph

mardi 20 août 2013

Les RMLLd se dérouleront pour la 2e fois à Saint-Joseph du 22 au 25 août.
C’est une opportunité pour les élèves qui suivent la spécialité ISN et les passionnés d’informatique.

Voici pour le samedi et le dimanche quelques interventions choisies :
- http://2013.d.rmll.info/Raspberry-votre-ordinateur-au-format-carte-de-credit?lang=fr
- http://2013.d.rmll.info/Materiel-libre-et-DIY?lang=fr
- http://2013.d.rmll.info/Arduino-de-l-electronique-libre?lang=fr

Noter aussi les conférences Art et Culture du dimanche, ainsi qu’une conférence plus engagée.

Le programme complet se trouve ici. Une radio sera ouverte pour l’occasion.
Des plaquettes à distribuer se trouvent ici.

Hyper-vidéos pour l’algorithmique au lycée

dimanche 19 août 2012

Olivier Roizès, à la demande de l’ADIREM, a réalisé une collection d’hyper-vidéos de présentation de logiciels et environnements de programmation. Ces hyper-vidéos, c’est-à-dire des vidéos contenant des éléments clicables, devraient être utiles aux enseignants désireux de se familiariser avec Python, CaRMetal, R, Rurple, Scilab ou Xcas.

Ouverture du SILO

mardi 1er novembre 2011

Le SILO (Science Informatique au Lycée : Oui !) est un espace collaboratif documentaire de partage et de formation collégiale, à destination des professeurs appelés à enseigner l’informatique au lycée.

Une initiative du CNDP, de l’INRIA et de Pasc@line, à laquelle se sont associés SPECIF, fuscia, EPI et ePrep.

Sur le Web : Site du SILO

Introduction à la science informatique

lundi 12 septembre 2011

Le CRDP de Paris publie le premier ouvrage destiné aux professeurs chargés d’enseigner la nouvelle spécialité « Informatique et sciences du numérique » en Terminale S à la rentrée 2012. Cet ouvrage a été coordonné par Gilles Dowek, directeur de recherche à l’INRIA.

Sur la création de la spécialité ISN, on pourra également consulter l’interview donnée au Café pédagogique par l’inspecteur général Robert Cabanne.

Sur le Web : CRDP de Paris

Deux publications sur l’algorithmique

samedi 17 octobre 2009

L’IREM d’Aix-Marseille publie une brochure de 73 pages, téléchargeable librement, intitulée Algorithmes et logique au lycée. Ces notions sont illustrées et déclinées sur des exercices du programme de spécialité mathématique en série L, mais sont adaptables aux programmes à venir.

Le hors série thématique n° 37 du magazine Tangente, disponible actuellement en kiosque, s’intitule « Les algorithmes. Au cœur du raisonnement structuré ». Extrait de l’éditorial : « La rédaction de Tangente a conçu la quasi-totalité de ce hors série thématique pour qu’il puisse être lu par des élèves de Seconde ».

Une carte mentale pour l’algorithmique

jeudi 10 septembre 2009

Sur son site, Jean-Jacques Dhénin a publié une carte mentale géante qui renvoie vers plus de 30 documents en ligne sur l’algorithmique. Tout ce qu’il faut — et même davantage — pour faire face au nouveau programme de Seconde !

Un catalogue libre d’algorithmes pour le lycée

dimanche 30 août 2009

Guillaume Connan, de l’IREM de Nantes, publie un catalogue libre de 119 pages d’algorithmes pour le lycée. Sur son site très riche, on trouvera d’autres documents en rapport avec l’algorithmique, notamment sur l’utilisation des langages fonctionnels au lycée et sur la comparaison programmation fonctionnelle/programmation impérative.

L’algorithmique à l’IREM de Lille

vendredi 26 juin 2009

Le groupe AMECMI de l’IREM de Lille vient de mettre en ligne des ressources importantes au service des professeurs de Seconde :

- Algorithmique et programmation (Emmanuel Ostenne)
- Bibliographie amoureuse de l’algorithmique (Alain Juhel)

Statistiques

Dernière mise à jour

dimanche 12 novembre 2017

Publication

773 Articles
Aucun album photo
133 Brèves
11 Sites Web
132 Auteurs

Visites

906 aujourd'hui
1252 hier
2163217 depuis le début
25 visiteurs actuellement connectés