Fonctions affines Programmation Python
L'objectif de cette activité est d'initier à la notion de fonction en programmation Python par l'intermédiaire des fonctions affines et des conversions de température.
Historiquement, la mesure de la température s'est faite grâce à la dilatation des corps liquides. D'abord qualitative, cette mesure s'est progressivement affinée et est devenue quantitative par la mise en place d'échelles de mesure basées sur des points de référence fixes, tels que la fusion de la glace.
Les échelles les plus connues sont le degré Celsius, le degré Fahrenheit et le kelvin.
Notre échelle de référence, le degré Celsius, admet deux points de référence fixe : le point de fusion de l'eau et son point d'ébullition, séparés d'exactement 100 parts égales, correspondant donc respectivement à 0°C et 100°C. C'est l'échelle de mesure que nous utilisons dans notre quotidien.
En sciences cependant, l'unité de température du système international est le kelvin, une unité dont les intervalles sont semblables à ceux du degré. En revanche, ces deux échelles sont décalées, de façon à ce que 0K est équivalent à -273,15°C.
A combien de kelvin équivaut une température de 0°C ? Et une température de 100°C ?
0°C est équivalent à 273,15K et 100°C est équivalent à 373,15K.
Soit la température d'un corps exprimée en degrés Celsius, et la température de ce même corps exprimée en kelvin. Exprimer en fonction de . De quel type de fonction s'agit-il ?
Il s'agit d'une fonction affine telle que .
Créons dans l'application Python de notre calculatrice un nouveau script intitulé temperature.py
. Nous y écrirons les différentes fonctions que nous allons réaliser dans cet exercice.
On souhaite écrire dans ce script une fonction CenK(x)
permettant de retourner, lorsqu'on entre dans le programme une température en degrés Celsius , la température en kelvin correspondante.
Une fonction est définie en Python à l'aide de l'instruction :
def nom_de_la_fonction(variable1, variable2,...) :
.
Les instructions qui sont à exécuter par la fonction doivent être indentées, c'est-à-dire décalées par rapport au début de la ligne, ce que la calculatrice réalise spontanément lorsqu'on revient à la ligne avec la touche EXE.
Ici, nous allons demander dans un premier temps à notre programme de calculer , la température en kelvin, puis ensuite d'en faire le résultat de notre fonction à l'aide de l'instruction return
.
La commande return
permet d'associer une variable de sortie à l'exécution de la fonction. Attention, cette commande arrête l'exécution de celle-ci, il faut donc que ce soit la toute dernière ligne de notre programme.
Compléter le programme afin qu'il réalise l'objectif mentionné :
def CenK(...): y = x + ... return ...
def CenK(x): y = x + 273.15 return y
On pourra faire remarquer aux élèves que la variable n'est ici pas nécessaire. En effet, on peut directement entrer return x + 273,15
.
On cherche maintenant à faire l'inverse.
Ecrire la fonction KenC(y)
permettant de retourner, pour une température en kelvin donnée, la température en degrés Celsius.
Tester le programme pour T = 32°C.
Si historiquement le degré Fahrenheit est antérieur aux deux autres échelles dont nous avons déjà parlé, son utilisation est plutôt restreinte aux pays d'Amérique du nord.
Les températures de référence utilisées sont différentes, de même que l'intervalle utilisé. Ainsi c'est la température du corps humain qui sert à définir les 100°F. Dans cette échelle, l'eau gèle à 32 °F et bout à 212 °F.
On appelle la fonction qui, à température en degrés Celsius, associe une température en degrés Fahrenheit. Exprimer les données de l'énoncé relatives aux changements d'état de l'eau à l'aide de cette fonction.
On a et .
On admet que la fonction est une fonction affine. A l'aide de la question précédente, déterminer son coefficient directeur et son ordonnée à l'origine, et en déduire une expression de la fonction .
Ecrire la fonction CenF(x)
qui, appliquée à une température donnée en degrés Celsius, retourne la température en degrés Fahrenheit.
def CenK(x): return (9/5)*x + 32
On souhaite utiliser les fonctions précédentes afin d'écrire une fonction KenF(t)
(qui permet de transformer les degrés Fahrenheit en kelvin) sans réaliser aucun calcul.
Il est possible, à l'intérieur d'une fonction, d'appeler une autre fonction déjà définie. Compléter l'algorithme suivant :
def KenF(t): degres = KenC(...) fahr = CenF(...) return ...
Tester le programme pour T = 310°K.
On pourra modifier le programme afin que le résultat soit arrondi à l'entier grâce à la commande round(valeur)
.
def KenF(t): degres = KenC(t) fahr = CenF(degres) return round(fahr)
Le programme retourne 98.