
##################### A la main par dichotomie

a= ? 					#Borne inférieure de l’intervalle de recherche
b= ?					#Borne supérieure de l’intervalle de recherche
p= ?					#Précision souhaitée

def f(x):				#Définition de l’équation
	return(f(x))			#Expression de l'équation à résoudre f(x)=0

while b-a>p:			#Méthode dichotomique
	m=(a+b)/2				#Calcul du milieu de l’intervalle de travail actuel
	if f(m)==0:				#Si on tombe exactement sur la racine par hasard
		a=m					    #Cloture de l’intervalle de recherche
		b=m
	elif f(a)*f(m)>0:		#Réduction de l’intervalle de recherche
		a=m					    #Actualisation de la borne inférieure
	else:					#Ou
		b=m					    #Actualisation de la borne supérieure
solution=(a+b)/2		#Calcul de la racine selon la précision souhaitée

print('x',solution) 	#Affichage de la solution

############################ Avec la fonction bisect 
# (la syntaxe doit être fournie)

import scipy.optimize as opt	#Importation du module requis

a= ?					        #Borne inférieure de l’intervalle de recherche
b= ?				            #Borne supérieure de l’intervalle de recherche

def f(x):					    #Définition de l’équation
    return f(x)				    #Expression de l'équation à résoudre f(x)=0
solution=opt.bisect(f,a,b)		#Recherche de l’unique racine f(x)=0 dans l’intervalle [a,b]

print('x=',solution)			#Affichage de la solution