Sans détailler chaque ligne, donnons ici quelques instructions clefs
pour la représentation graphique :
import numpy as np
import matplotlib.pyplot as plt
##----- Définition des fonctions -----##
def represente_courbe(f, a, b, n, racine) :
""" on représente f sur [a,b] en découpant [a;b] en n intervalles
de même longueur. Place la "racine". """
liste_abscisses = np.linspace(a, b, n+1)
liste_ordonnees = [ f(x) for x in liste_abscisses ]
plt.plot(liste_abscisses, liste_ordonnees, r, 0, "^")
plt.grid()
plt.show()
def g(x) :
return (x - 2**0.5) * (x + 2**0.5)
def sont_de_signes_opposes(p,q) :
return p*q < 0
def dichotomie(f, epsilon, a, b) :
""" f est supposée continue, strictement monotone sur [a;b]
avec f(a) et f(b) de signes opposés."""
while abs(b-a) > epsilon :
m = (a+b)/2
if f(m) == 0 :
a = b = m
if sont_de_signes_opposes(f(a),f(m)):
(a,b) = (a, m)
else:
(a,b) = (m, b)
return m
##----- Tests et interaction -----##
r = dichotomie(g, 1e-4, 0, 10)
represente_courbe(g, 0, 10, 10, r)