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

Aller à la navigation Aller à la recherche
m
<source> -> <syntaxhighlight> (phab:T237267)
Aucun résumé des modifications
m (<source> -> <syntaxhighlight> (phab:T237267))
 
Les algorithmes ci-dessous seront appliqués à la fonction ''f'' : <math>x\mapsto x^2-5</math>. On va donc commencer par créer une ''méthode'' pour cela:
 
<sourcesyntaxhighlight lang="ruby">
def f(x)
return x**2-5
end
 
</syntaxhighlight>
</source>
 
==Résolution numérique d'une équation==
Pour chercher à <math>10^{-14}</math> près un antécédent de 0 par ''f'', on peut utiliser la [[w:Méthode de dichotomie|méthode de dichotomie]]:
 
<sourcesyntaxhighlight lang="ruby">
def zerof(a,b)
if f(a)*f(b)>0 then
 
puts(zerof(1,3))
</syntaxhighlight>
</source>
 
Le script affiche une solution parce que f(1) est négatif et f(3) positif. Sinon on aurait un message d'erreur.
On approche la tangente par une sécante. On utilise une méthode centrée:
 
<sourcesyntaxhighlight lang="ruby">
def NDerf(x)
h=1e-10
 
puts(NDerf(2))
</syntaxhighlight>
</source>
 
On voit que <math>f'(2)\simeq 4</math>
La méthode des rectangles consiste à approcher <math>\int_a ^b f(t) \, dt</math> par la somme des aires des rectangles de largeur ''h'' et de hauteur ''f(a+nh)'' pour ''a+nh'' allant de ''a'' à ''b''. On choisit ''N'' assez grand (ici 1 000 000) pour que ''h'' soit petit et l'approximation bonne:
 
<sourcesyntaxhighlight lang="ruby">
def Nintf(a,b)
h=(b-a).to_f/1e6
end
 
puts(Nintf(0,2))</sourcesyntaxhighlight>
1 535

modifications

Menu de navigation