Une fonction ultra plate

flottants_fonction_ultra_plate_1.gif

  On étudie la fonction numérique f définie sur R par f ( 0 ) = 0 et   f ( x ) = e - 1 x 2 si x 0 .
  Au voisinage de 0, le calcul de cette fonction est altéré par des erreurs d'underflow: c'est l'objet de ce TD

Q1) Ecrire une fonction f(x) calculant la fonction f ( x ) .

   Mathématiquement f s'annule uniquement en x = 0 mais informatiquement (erreur d'underflow) f est nulle sur un intervalle [-a, a] que l'on cherche à calculer.
On imagine les trois façons suivantes: les exécuter et comparer les résultats.

Q2)  Recherche graphique:  Ecrire une fonction graphe_f(x) traçant le graphe de f sur [-x,x] et par tâtonnement calculer a.

On rappelle que le tracé d'une fonction f sur [a, b] sur la fenêtre [xmin, xmax, ymin ,ymax ] s'écrit:

from math import *
import numpy as np
import pylab as plt

def graphe_f(a, b):
    """ Graphe de f sur [a, b]"""
    plage_x = np.linspace(a, b, 200)
    plt.grid(True)
    plage_y = [f(z) for z in plage_x]
    plt.plot(plage_x , plage_y)
    plt.title("Graphe de f(x) sur ["+str(a)+" , "+str(b)+"]")
    plt.axis([xmin, xmax, ymin ,ymax ])
    plt.show()

Q3) Calcul théorique: Chercher (dans le cours) quel est le plus petit réel flottant strictement positif ε et écrire une fonction recherche_theo() calculant a en résolvant l'équation f(a) = ε.

Q4) Avec l'algorithme de dichotomie: remarquer que par exemple, f(0.01) = 0 et f(1) > 0. En adaptant l'algorithme de dichotomie, écrire une fonction recherche_dicho() calculant a.

© 2014 - Eric Obermeyer      Powered by      Corrigé