CPGE OUJDA Ingénierie Numérique(Zéro d’une fonction) SPE Question1 : Ecrire une fonction python qui cherche le zéro d’une fonction par la méthode dichotomique(donner une version itérative et une version récursive) Question2 : Ecrire une fonction python qui cherche le zéro d’une fonction par la méthode de la fausse position (donner une version itérative et une version récursive) Question3 : Ecrire une fonction python qui Calcule la dérivée d’une fonction par la deuxième méthode Question4 : Ecrire une fonction python qui cherche le zéro d’une fonction par la méthode de Newton(donner une version itérative et une version récursive) Solutions : Solutions Zero d’une fnction Dichotomie import math def f(x): return x**(1/2) * math.cos(x) def dichotomie(a, b, f, eps=1e-10): """ calcul du zéro d'une focntion a,b : l'intervalle [a,b] f : la fonction eps : la valeur epsillon de la précission souhaitée """ if(math.fabs(a - b) <= eps): # on prend la valeur absolue return (a+b)/2.0 else: fa = f(a) fb = f(b) fm = f((a+b)/2.0) if(fa * fm <= 0): return dichotomie(a, (a+b)/2.0, f, eps) elif(fm * fb <= 0): return dichotomie((a+b)/2.0, b, f, eps) Fausse position ## méthode de la fausse position pour trouver x / f(x)=0 import math def f(x): return (math.log(x)-x**3+4) def faussePosition(a,b,f, eps): continu = True x1=a x2=b x3=max(x1,x2) # pour initialiser x3 n=1 while continu : diff = f(x2) * f(x1) if math.fabs(f(x3)) <= eps : continu= False else : x3 = x2 - ( (x2-x1)/diff * f(x2) ) produit = f(x1)* f(x3) if produit < 0 : x2=x3 else : x1=x3 n+=1 return x3 secante: def secante(xn_1, xn, f, erreur): if(math.abs(xn_1 - xn) <= erreur): return xn else return secante(xn, xn - (xn - xn_1)/(f(xn) - f(xn_1))*f(xn) , f, erreur) Newton ### méthode de Newton, zéro d'une fonction import math def f(x): return x-math.log(x)-3 def df (f,x, h): return (f(x+h)-f(x-h)) / (2.0*h) def newton(f, df, xi, h , n): if(n == 0): return xi else: return newton(f, df, xi - f(xi)/df(f,xi,h), h, n-1) x0 = 2 y0=f(x0) h=0.0001 n=10 print("Abcisse du zéro (méthode Newton :", newton(f, df, x0, h, n))