Mathématiques avec Python et Ruby/Analyse numérique en Python
Fonction
[modifier | modifier le wikicode]Dans 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
[modifier | modifier le wikicode]Pour 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é
[modifier | modifier le wikicode]Pour 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
[modifier | modifier le wikicode]La 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))