Mathématiques avec Python et Ruby/Analyse numérique en Python
Fonction
modifierDans ce chapitre, on va effectuer des calculs sur la fonction ; on va appeler cette fonction f. Pour se faciliter la suite, on va créer cette fonction :
def f(x):
return x**2-5
Résolution numérique d'une équation
modifierPour résoudre l'équation f(x)=0, on cherche un intervalle sur lequel on est certain que f s'annule. C'est le cas pour [1;3] parce que f(1) est négatif et f(3) est positif. La méthode de dichotomie vise à resserrer un tel intervalle. On constate ci-dessous que la fonction f est traitée comme une entrée de l'algorithme au même titre que les bornes a et b de l'intervalle :
def zero(f,a,b):
if f(a)*f(b)>0:
print('pas de solution entre '+str(a)+' et '+str(b)+'!')
return 0
while(abs(a-b)>1e-14):
m=(a+b)/2.
if f(m)*f(a)>0:
a=m
else:
b=m
print('la solution de f(x)=0 est '+str(m))
return m
print(zero(f,1,3))
La résolution de l'équation n'est pas terminée, puisque le script ci-dessus n'a donné qu'une seule des deux solutions de cette équation. Par ailleurs, la solution trouvée n'est affichée qu'à près.
Calcul numérique de nombre dérivé
modifierPour calculer le nombre dérivé de f en 5, on va utiliser l'approximation :
def NDer(f,a):
h=1e-10
return (f(a+h)-f(a-h))/(2*h)
print(NDer(f,5))
Calcul numérique d'une intégrale
modifierLa méthode des rectangles dit que où et N est suffisamment grand pour que h soit petit (ci-dessous N=1 000 000) :
def Int(f,a,b):
h=(b-a)/1000000.0
somme=0
for n in range(1000000):
somme+=h*f(a+n*h)
return(somme)
print(Int(f,0,2))