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

Contenu supprimé Contenu ajouté
Ligne 126 :
</source>
 
On crée une liste des ancêtres jusqu'à la génération ''n'' comprise (''genealogie'') et une liste (''generations'') des nombres d'ancêtres à la génération ''n'' seulement. La lise ''test'' est constituée des entiers ''n'' pour lesquels le nombre d'ancêtres à la génération ''n'' n'est '''pas''' égal au total d'ancêtres jusqu'à la génération ''n-1'' augmenté de 2 (avec ''reject'', on a enlevé les positifs). La longueurslongueur de ce ''test'' est très petite !
 
Avec ''mathn'' on peut calculer des suites géométriques de raison complexe. La somme des termes est alors particulièrement intéressante à étudier (par exemple si la raison vaut ''i'').
 
===Suite de Fibonacci===
 
====Calcul des termes====
 
La récurrence de la [[w:Suite de Fibonacci|suite de Fibonacci]] est double, avec <math>u_{n+1}=u_n+u_{n-1}</math>. Son calcul pose donc un problème algorithmique, puisqu'il faut trois variables (les deux termes à calculer et une variable ''tampon'' pour stocker temporairement l'un des deux termes, afin qu'il ne soit pas écrasé par la somme). Ce problème n'existe pas en ''Ruby'' qui permet les affectations simultanées:
 
<source lang="ruby">
a=1
b=1
for n in 1..20 do
a,b=b,a+b
puts(b)
end
</source>
 
On peut aussi le faire de manière plus ''Ruby'':
 
<source lang="ruby">
a=1
b=1
(1..20).collect{
a,b=b,a+b
puts(b)
}
</source>
 
====Nombre d'Or====
 
Pour étudier le quotient de deux termes successifs de la suite:
 
<source lang="ruby">
a,b=1,1
(1..20).collect{
a,b=b,a+b
puts(b.to_f/a.to_f)
}
 
puts((5**0.5+1)/2)
</source>
 
Mais en fait, les nombres de Fibonacci étant entiers, leurs quotients sont des fractions, et cette variante le montre:
 
<source lang="ruby">
require 'mathn'
 
a,b=1,1
(1..20).collect{
a,b=b,a+b
puts(b/a)
}
</source>
 
On a donc une suite d'approximations rationnelles du [[w:Nombre d'or|nombre d'Or]].
 
=Suites d'entiers=