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

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
DannyS712 (discussion | contributions)
m <source> -> <syntaxhighlight> (phab:T237267)
 
Ligne 5 :
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==
Ligne 16 :
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
Ligne 35 :
 
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.
Ligne 43 :
On approche la tangente par une sécante. On utilise une méthode centrée:
 
<sourcesyntaxhighlight lang="ruby">
def NDerf(x)
h=1e-10
Ligne 50 :
 
puts(NDerf(2))
</syntaxhighlight>
</source>
 
On voit que <math>f'(2)\simeq 4</math>
Ligne 58 :
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
Ligne 64 :
end
 
puts(Nintf(0,2))</sourcesyntaxhighlight>