« Mathématiques avec Python et Ruby/Analyse numérique en Python » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 1 :
=Fonction=
=Méthode de Dichotomie=
 
Dans ce chapitre, on va effectuer des calculs sur la fonction <math>x\mapsto x^2-5</math>; on va appeler cette fonction ''f''. Pour se faciliter le suite, on va créer cette fonction:
=Méthode de Simpson=
 
<source lang="python">
=Méthode d'Euler=
def f(x):
return x**2-5
 
</source>
 
=Résolution numérique d'une équation=
 
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 [[w:Méthode de dichotomie|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:
 
<source lang="python">
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))
</source>
 
La résolution de l'équation <math>x^2=0</math> 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'à <math>10^{-14}</math> près.
 
=Calcul numérique de nombre dérivé=
 
Pour calculer le nombre dérivé de ''f'' en 5, on va utiliser l'approximation <math>f'(x)\simeq \frac{f(x+h)-f(x)}{2h}</math>:
 
<source lang="python">
def NDer(f,a):
h=1e-10
return (f(a+h)-f(a-h))/(2*h)
 
 
 
print(NDer(f,5))
 
</source>
 
=Calcul numérique d'une intégrale=
 
La méthode des rectangles dit que <math>\int_a ^b f(t) \,dt\simeq \sum_{k=0}^N h\times f(a+kh)</math> où <math>h=\frac{b-a}{N}</Math> et ''N'' est suffisamment grand pour que ''h'' soit petit (ci-dessous N=1 000 000):
 
<source lang="python">
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))
</source>
 
[[Catégorie:Informatique]]