Zero d`une fonction

publicité
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))
Téléchargement