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

Contenu supprimé Contenu ajouté
Ligne 72 :
 
===Suites arithmétiques et géométriques===
 
Les suites arithmétiques et géométriques sont aussi des suites récurrentes
 
====Suites arithmétiques====
 
Une suite est arithmétique de raison ''r'' si <math>\forall n, u_{n+1}=u_n +r</math>. Cette définition est récurrente.
 
Par exemple, si on place 2000 € avec des intérêts (simples) correspondant à 3 % du capital de départ, soit 60 €, on peut calculer les valeurs successives du capital pendant 20 ans avec
 
<source lang="ruby">
capital=2000.00
interet=capital*3/100.0
20.times do
capital+=interet
puts(capital)
end
</source>
 
====Suites géométriques====
 
Une suite est géométrique de raison ''r'' si <math>\forall n, u_{n+1}=u_n \times r</math>. Les suites géométriques sont donc aussi récurrentes.
 
Si on place 2000 € à intérêts composés au taux de 2 % par an, l'affichage des valeurs successives du capital (arrondies à l'eurocent près) peut se faire avec
 
<source lang="ruby">
capital=2000.00
20.times do
capital*=1.02
puts(capital.round(2))
end
</source>
 
Sachant que chaque humain a deux parents et que chacun d'entre eux a aussi deux parents, etc. on peut dire que le nombre d'ancêtres à la génération ''n'' est géométrique de raison 2. Le nombre total d'ancêtres jusqu'à la génération ''n'' s'obtient par
 
<source lang="ruby">
(0..20).inject{|ancetres,generation| ancetres+=2**generation}
 
puts(ancetres)
puts(2**21)
</source>
 
On a presque autant d'ancêtres à la génération 21 qu'à toutes les génération précédentes cumulées!
 
Ce qui donne envie de vérifier si c'est pareil pour toutes les générations ou si c'est une spécificité de la génération 21:
 
<source lang="ruby">
genealogie=[1]*20
(1..20).collect{|i| genealogie[i]=(0..i).inject{|a,g| a+=2**g }}
generations=[1]*20
(1..20).collect{|i| generations[i]=2**i}
test=(1..20).reject{|i| generations[i]==genealogie[i-1]+2}
puts(test.size)
</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 longueurs de ce ''test'' est très petite !
 
===Suite de Fibonacci===