Programmation et fonctions

Merci !

Fiches
Classe(s) : Tle ST2S - Tle STI2D - Tle STL - Tle STMG | Thème(s) : Fonctions exponentielles, logarithme décimal, inverse

A Fonctions en informatique

La syntaxe d’une fonction en langage Python est :

Image dont le contenu est 	def nom(paramètre1, paramètre2):	    Instructions	    return résultat; Fin de l'image

Une fonction peut avoir aucun, un ou plusieurs paramètres.

Le résultat éventuel d’une fonction, renvoyé par le mot-clé return, est utilisable dans un programme ou une autre fonction.

B Résolution approchée d’une équation par balayage

On considère la situation suivante : rechercher une valeur approchée à 0,01 près de la solution x0 de l’équation 10x = 25. Considérons la fonction f définie par f : x ↦ 10x. En langage Python, on peut définir cette fonction par :

Image dont le contenu est     def f(x) :        return 10 ** x; Fin de l'image

On a le tableau de variation suivant :

Tableau de 2 lignes, 4 colonnes ;Corps du tableau de 2 lignes ;Ligne 1 : x; 1; x0; 2; Ligne 2 : f(x); 10; 25; 100;

La fonction f est dérivable, strictement croissante sur l’intervalle [1, 2] où l’équation f(x) = 25 admet une solution unique x0. Le principe de l’algorithme de balayage à un « pas » donné, à partir de x = 1, consiste à :

ajouter à x la valeur du pas ;

calculer l’image par f ;

recommencer jusqu’à ce que l’image par f dépasse la valeur 25.

En prenant comme valeur du pas 0,01, l’algorithme suivant fournit un encadrement de x0 de longueur 0,01.

Tableau de 2 lignes, 2 colonnes ;Corps du tableau de 2 lignes ;Ligne 1 : Langage naturel; Python; Ligne 2 : Fonction balayage(pas)    x ← 1    Tant que f(x) < 25        x ← x + pas    Fin Tant que    Renvoyer x − pas et x;     def balayage(pas) :        x = 1        while f(x) < 25 :            x = x + pas        return(x - pas, x);

On sait que la solution de l’équation 10x = 25 est log (25) qui vaut environ 1,39794.

Pour un pas de 0,01, la fonction balayage renvoie le couple (1.3900000000000003, 1.4000000000000004) qui correspond à l’encadrement [1,39 ; 1,40].

C Révolution approchée d’une équation par dichotomie

On reprend la situation précédente : rechercher une valeur approchée à 0,01 près de la solution x0 de l’équation 10x = 25. Considérons, à présent, la fonction f définie par f : x ↦ 10x − 25 de sorte que l’on recherche x0 tel que f(x0) = 0. En langage Python, on peut définir cette fonction par :

Image dont le contenu est     def f(x) :        return 10 ** x - 25; Fin de l'image

La fonction f est dérivable, strictement croissante sur l’intervalle [1, 2] avec f(1) < 0 et f(2) > 0. L’équation f(x) = 0 admet donc une solution unique x0 dans l’intervalle [1, 2]. Le principe de l’algorithme de dichotomie pour une approximation donnée, consiste, à partir de l’intervalle [a, b] où a = 1 et b = 2, à :

calculer l’image par f du milieu de l’intervalle [a, b], fa+b2 ;

si fa+b2 < 0, remplacer l’intervalle [ab] par l’intervalle a+b2, b ;

sinon, remplacer l’intervalle [a, b] par l’intervalle a, a+b2 ;

recommencer tant que la longueur de l’intervalle (qui est divisée par 2 à chaque étape) est supérieure à l’approximation donnée.

En prenant comme valeur d’approximation 0,01, l’algorithme suivant fournit un encadrement de x0 de longueur 0,01.

15789_C02_01
Tableau de 2 lignes, 2 colonnes ;Corps du tableau de 2 lignes ;Ligne 1 : Langage naturel; Python; Ligne 2 : Fonction dichotomie(approx)    a ← 1    b ← 2    Tant que b − a > approx        x ← a+b2        Si f(x) < 0 alors a ← x        Sinon b ← x    Fin Tant que    Renvoyer a et b;     def dichotomie(approx):       a = 1       b = 2       while b - a > approx:           x = (a + b)/2           if f(x) < 0:               a = x           else:               b = x       return(a, b);

La requête dichotomie(0.25) renvoie (1.25, 1.5) qui correspond à l’illustration graphique ci-dessus, où deux étapes aboutissent à situer x0 dans l’intervalle [1,25 ; 1,5].

La requête dichotomie(0.01) renvoie (1.390625, 1.3984375) qui permet d’affirmer que x0 est compris entre 1,39 et 1,40.

REMARQUE

Dans le cas où f est décroissante, la condition if f(x) < 0 est remplacée par if f(x) > 0.

#quiz

Des questions pour réviser

foucherconnect.fr/code à venir