Python en mathématiques - Niveau 1

Quelques exercices autour des fonctions

Un petit résumé des instructions du langage Python est disponible au téléchargement en cliquant ici.

Fonction affine

Programmez le calcul de l'image de $x$ par la fonction $f$ définie par $f(x) = 3 x + 4$. Une spécification possible de cette fonction est :

Paramètre un nombre réel x
Valeur renvoyée l'image de x par la fonction $x \mapsto 3 x + 4$

					
					
  • Une réponse en programmant sur ce site
  • Une réponse en programmant avec l'éditeur

L'interaction avec l'utilisateur demande au programme d'afficher à l'écran l'image de $5$ par exemple :


								
								

On écrit la définition de la fonction f dans l'éditeur :

Exemple avec l'éditeur

On sauvegarde ce programme sous le nom Prem_exemple.py (par exemple) puis on l'exécute (touche [F5]) :

Exemple avec l'éditeur

Le message

RESTART: D:/Users/Nicolas/Prem_exemple.py

signifie que la console a redémarré (RESTART) en prenant en compte le contenu du fichier Prem_exemple.py, c'est-à-dire la définition de la fonction f.

Pour déterminer l'image de 5 par la fonction f, plusieurs possibilités s'offrent à nous :

  1. Visualiser la valeur de la mémoire lors du calcul d'image : Exemple avec l'éditeur
  2. Stocker cette valeur dans une variable. Exemple avec l'éditeur La valeur n'est plus visualisée puisqu'elle devient le contenu d'une variable.
    Il est par contre possible de visualiser le contenu de cette variable : Exemple avec l'éditeur
  3. Utiliser explicitement la fonction print() (déconseillé nous vous le rappelons) : Exemple avec l'éditeur

Interpréter une fonction

Cet exercice n'a pas d'autre intérêt que permettre aux élèves d'interpréter la définition d'une fonction écrite en Python.

On considère la fonction ci-dessous, écrite en Python :


def f(x):
    y = 2*(x+3)
    y = y+x
    return y/3-2
	

On considèrera que le calcul sur les float est mathématiquement correct.

  1. Quelle est la valeur de f(-2) ?
  2. Déterminer les images de 0 puis de 5 par cette fonction f. Que constate-t-on ?
  3. Donner une expression simplifiée de la fonction f en fonction de x. Conclure.
  • Question 1°/
  • Question 2°/
  • Question 3°/
  • Commentaire
Valeur de x en paramètre : -2
1ère valeur de y : 2*(-2+3) = 2
2ème valeur de y : 2 + (-2) = 0
Valeur renvoyée par f : 0/3 - 2 = -2
Valeur de x en paramètre : 0
1ère valeur de y : 2*(0+3) = 6
2ème valeur de y : 6 + 0 = 6
Valeur renvoyée par f : 6/3 - 2 = 0
Valeur de x en paramètre : 5
1ère valeur de y : 2*(5+3) = 16
2ème valeur de y : 16 + 5 = 21
Valeur renvoyée par f : 21/3 - 2 = 5

On constate que la valeur renvoyée par la fonction f semble égale à la valeur entrée en paramètre de f.

Valeur de x en paramètre : x
1ère valeur de y : 2*(x+3) = 2*x + 6
2ème valeur de y : 2*x + 6 + x = 3*x + 6
Valeur renvoyée par f : (3*x + 6)/3 - 2 = x + 2 - 2 = x

Avec un algorithme, on supposera (au moins en classes de lycée) travailler avec les objets mathématiques (entiers, réels, etc...).

Avec un programme, l'interprétation est nécessairement soumise à l'implémentation de ces objets mathématiques en machine (cf. la page [Types manipulés par Python] → [Nombres en machine]).

Testons par exemple le calcul de f(2.11) :

>>> f(2.11)
2.1099999999999994

Ce calcul renvoie une image distincte de l'antécédent. C'est la raison pour laquelle l'exercice commence par la phrase « On considèrera que le calcul sur les float est mathématiquement correct ». C'est aussi la raison pour laquelle on ne raisonnera pas avec les élèves en général sur un programme : on raisonne sur un algorithme, qui manipule les objets idéaux des mathématiques.

Le programme ci-dessous est défini sur une plage de données sur laquelle environ 50% des valeurs de $x$ sont telles que $ f(x) \neq x $ en machine (où $f$ est la fonction de notre exercice) :


		
		

trois paramètres.

Écrire en Python le code de la fonction temps_secondes() spécifiée comme suit :

Paramètres un entier h, un entier m, un entier s
Valeur renvoyée le temps en secondes correspondant au cumul de h heures, m minutes et s secondes

					
					
  • Un code possible

def temps_secondes(h, m, s):
    return h*3600 + m*60 + s

Exemple d'exécution :

>>> temps_secondes(2, 16, 42)
8202

Deux paramètres, deux sorties

Écrire en Python le code de la fonction aire_du_rectangle() spécifiée comme suit :

  1. Écrire en Python le code de la fonction aire_du_rectangle() qui respecte la spécification suivante :
    Paramètres deux nombres réels largeur et longueur
    Valeur renvoyée l'aire du rectangle dont les côtés ont pour mesure largeur et longueur.
  2. Renommer et modifier cette fonction pour qu'elle renvoie l'aire et le périmètre de ce rectangle.

					
					
  • Calcul de l'aire
  • Calcul de l'aire et du périmètre

					
					

En langage Python, on peut également avoir plusieurs sorties pour une fonction en séparant ces sorties par une virgule.
L'affectation parallèle des variables permet de récupérer les différentes valeurs de sortie :


def aire_et_perimetre_du_rectangle(largeur, longueur):
    return largeur * longueur, 2*(largeur + longueur)
>>> l, L = 4, 7

>>> aire, perimetre = aire_et_perimetre_du_rectangle(l, L)

>>> aire
28

>>> perimetre
22
	

En fait, il n'y a qu'un seul objet en valeur de retour :
le tuple (largeur * longueur, 2*(largeur + longueur)).
Dans le cas présent, on peut dire que c'est un couple de valeurs qui est renvoyé.

Milieu d'un segment

Écrire une fonction en langage Python prenant en paramètres les coordonnées de deux points et renvoyant les coordonnées du milieu du segment défini par ces deux points.


					
					
  • Un code possible