import math as m
import scipy.optimize as sc

def f(x):
    return(m.exp(-x)+x/5-1)


def ZeroDicho(f,a,b,eps):
    """Recherche un zero de la fonction f entre a et b par dichotomie, et renvoie une valeur approchée à eps près
    La fonction f est supposée continue, et vérifie f(a) * f(b) <= 0"""
    while abs(a-b)>2*eps:
        m=(a+b)/2
        if f(a)*f(m)<0:
            b=m
        else:
            a=m
    return((a+b)/2)

# Résolution par dichotomie puis avec la fonction bisect
s_d=ZeroDicho(f,1e-2,10,0.01)
s_b=sc.bisect(f,1e-2,10)

# Affichage des résultats
print("solution par dichotomie :", s_d)
print("solution par bisect :", s_b)