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 :
Pour programmer cette suite en Sophus, pas besoin de parler de multiplication ou de raison :
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 :
Le script Sophus est une petite modification du précédent, avec un test dans la boucle :
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 :
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 :
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 :
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 :
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 :
Dans un site très personnel, Olivier Sicard nous offres quelques « délires » de mathématiques, algorithmique et programmation. Entre autres pépites, on découvrira le Rubix-Tore, la loi normale asymétrique, la théorie du choix social et le dessin à l’aide des séries de Fourier.
Après Elwyn Berlekamp l’année dernière, c’est au tour du centenaire Richard Guy et de l’immense John Conway. Ce document de Richard Guy (une mise en garde contre le raisonnement inductif) montre bien le style unique de son auteur, en plus d’être une mine de ressources pour des exercices. Conway, outre son jeu de la vie, a créé des dizaines de jeux, dont Sprouts, très populaire dès le CP.
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.
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.
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.
Commentaires