 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 08 Juin 2016 15:35 Sujet du message: Suites Fibonacci, Lucas etc... |
|
|
Bonjour ALS,
Cela fait un petit moment : )
J'espère que ça va de votre côté : )
Ici, bébé grandit et gazouille lol : )
Enfin... pourriez-vous s'il vous plaît m'aider à corriger cette séquence qui calcule les nombres d'une suite de type Fibonacci ou Lucas ; j'essaie avec la fonction "seq" pour faire varier mes deux nombres de départ, mais le programme semble ne faire varier qu'un seul des nombres de départ.
En fait, il faudrait que le programme me renvoie, la totalité des listes en prenant en compte la totalité des p-listes de 2 élements pris dans 9 éléments.
C'est à dire que le programme devrait renvoyer comme résultat :
- une suite avec 1 et 1 comme nombres de départ
- une suite avec 1 et 2 comme nombres de départ
- une suite avec 1 et 3 comme nombres de départ
(...)
- une suite avec 2 et 2 comme nombres de départ
- une suite avec 2 et 3 comme nombres de départ
(...)
etc...
Sachant que l'on travaille avec les chiffres de 1 à 9.
Voici le début :
===========================
restart;
Digits := 1000;
Suite := proc (n)
local i, s1, s2, s:
s1 := seq(i, i = 1 .. 9):
s2 := seq(i, i = 1 .. 9):
for i to n do
s := s1+s2:
s1 := s2:
s2 := s :
end do:
end proc:
a:= [seq(Suite(i), i = 1 .. 10)];
================================= |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 09 Juin 2016 6:03 Sujet du message: |
|
|
Bonjour,
On va utiliser la procédure Fib de paramètres n,s1,s2 qui renvoie la liste des n premiers termes de la suite de Fibonacci de premiers termes s1 et s2. Ensuite j'applique une séquence double pour afficher les 81 listes.
Je me suis ici limité aux 10 premiers termes, mais on peut changer la valeur de n selon ses besoins.
Code: |
> Fib:=proc(n,s1,s2)
> local f,i,s,t,u;
> if n=1 then return [s1] elif n=2 then return [s1,s2] else
> t:=s1: u:=s2: f:=t,u:
> for i to n-2 do
> s := t+u:
> f:=f,s:
> t := u:
> u := s:
> od:
> return([f])
> fi
>end proc:
> Fib(10,1,2);
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
> s1 := seq(i, i = 1 .. 9):
> s2 := seq(i, i = 1 .. 9):
> seq(seq(Fib(10,i,j),j=s2),i=s1);
[1, 1, 2, 3, 5, 8, 13, 21, 34, 55],
[1, 2, 3, 5, 8, 13, 21, 34, 55, 89],
[1, 3, 4, 7, 11, 18, 29, 47, 76, 123],
[1, 4, 5, 9, 14, 23, 37, 60, 97, 157],
[1, 5, 6, 11, 17, 28, 45, 73, 118, 191],
[1, 6, 7, 13, 20, 33, 53, 86, 139, 225],
[1, 7, 8, 15, 23, 38, 61, 99, 160, 259],
[1, 8, 9, 17, 26, 43, 69, 112, 181, 293],
[1, 9, 10, 19, 29, 48, 77, 125, 202, 327],
[2, 1, 3, 4, 7, 11, 18, 29, 47, 76],
[2, 2, 4, 6, 10, 16, 26, 42, 68, 110],
[2, 3, 5, 8, 13, 21, 34, 55, 89, 144],
[2, 4, 6, 10, 16, 26, 42, 68, 110, 178],
[2, 5, 7, 12, 19, 31, 50, 81, 131, 212],
[2, 6, 8, 14, 22, 36, 58, 94, 152, 246],
[2, 7, 9, 16, 25, 41, 66, 107, 173, 280],
[2, 8, 10, 18, 28, 46, 74, 120, 194, 314],
[2, 9, 11, 20, 31, 51, 82, 133, 215, 348],
[3, 1, 4, 5, 9, 14, 23, 37, 60, 97],
[3, 2, 5, 7, 12, 19, 31, 50, 81, 131],
[3, 3, 6, 9, 15, 24, 39, 63, 102, 165],
[3, 4, 7, 11, 18, 29, 47, 76, 123, 199],
[3, 5, 8, 13, 21, 34, 55, 89, 144, 233],
[3, 6, 9, 15, 24, 39, 63, 102, 165, 267],
[3, 7, 10, 17, 27, 44, 71, 115, 186, 301],
[3, 8, 11, 19, 30, 49, 79, 128, 207, 335],
[3, 9, 12, 21, 33, 54, 87, 141, 228, 369],
[4, 1, 5, 6, 11, 17, 28, 45, 73, 118],
[4, 2, 6, 8, 14, 22, 36, 58, 94, 152],
[4, 3, 7, 10, 17, 27, 44, 71, 115, 186],
[4, 4, 8, 12, 20, 32, 52, 84, 136, 220],
[4, 5, 9, 14, 23, 37, 60, 97, 157, 254],
[4, 6, 10, 16, 26, 42, 68, 110, 178, 288],
[4, 7, 11, 18, 29, 47, 76, 123, 199, 322],
[4, 8, 12, 20, 32, 52, 84, 136, 220, 356],
[4, 9, 13, 22, 35, 57, 92, 149, 241, 390],
[5, 1, 6, 7, 13, 20, 33, 53, 86, 139],
[5, 2, 7, 9, 16, 25, 41, 66, 107, 173],
[5, 3, 8, 11, 19, 30, 49, 79, 128, 207],
[5, 4, 9, 13, 22, 35, 57, 92, 149, 241],
[5, 5, 10, 15, 25, 40, 65, 105, 170, 275],
[5, 6, 11, 17, 28, 45, 73, 118, 191, 309],
[5, 7, 12, 19, 31, 50, 81, 131, 212, 343],
[5, 8, 13, 21, 34, 55, 89, 144, 233, 377],
[5, 9, 14, 23, 37, 60, 97, 157, 254, 411],
[6, 1, 7, 8, 15, 23, 38, 61, 99, 160],
[6, 2, 8, 10, 18, 28, 46, 74, 120, 194],
[6, 3, 9, 12, 21, 33, 54, 87, 141, 228],
[6, 4, 10, 14, 24, 38, 62, 100, 162, 262],
[6, 5, 11, 16, 27, 43, 70, 113, 183, 296],
[6, 6, 12, 18, 30, 48, 78, 126, 204, 330],
[6, 7, 13, 20, 33, 53, 86, 139, 225, 364],
[6, 8, 14, 22, 36, 58, 94, 152, 246, 398],
[6, 9, 15, 24, 39, 63, 102, 165, 267, 432],
[7, 1, 8, 9, 17, 26, 43, 69, 112, 181],
[7, 2, 9, 11, 20, 31, 51, 82, 133, 215],
[7, 3, 10, 13, 23, 36, 59, 95, 154, 249],
[7, 4, 11, 15, 26, 41, 67, 108, 175, 283],
[7, 5, 12, 17, 29, 46, 75, 121, 196, 317],
[7, 6, 13, 19, 32, 51, 83, 134, 217, 351],
[7, 7, 14, 21, 35, 56, 91, 147, 238, 385],
[7, 8, 15, 23, 38, 61, 99, 160, 259, 419],
[7, 9, 16, 25, 41, 66, 107, 173, 280, 453],
[8, 1, 9, 10, 19, 29, 48, 77, 125, 202],
[8, 2, 10, 12, 22, 34, 56, 90, 146, 236],
[8, 3, 11, 14, 25, 39, 64, 103, 167, 270],
[8, 4, 12, 16, 28, 44, 72, 116, 188, 304],
[8, 5, 13, 18, 31, 49, 80, 129, 209, 338],
[8, 6, 14, 20, 34, 54, 88, 142, 230, 372],
[8, 7, 15, 22, 37, 59, 96, 155, 251, 406],
[8, 8, 16, 24, 40, 64, 104, 168, 272, 440],
[8, 9, 17, 26, 43, 69, 112, 181, 293, 474],
[9, 1, 10, 11, 21, 32, 53, 85, 138, 223],
[9, 2, 11, 13, 24, 37, 61, 98, 159, 257],
[9, 3, 12, 15, 27, 42, 69, 111, 180, 291],
[9, 4, 13, 17, 30, 47, 77, 124, 201, 325],
[9, 5, 14, 19, 33, 52, 85, 137, 222, 359],
[9, 6, 15, 21, 36, 57, 93, 150, 243, 393],
[9, 7, 16, 23, 39, 62, 101, 163, 264, 427],
[9, 8, 17, 25, 42, 67, 109, 176, 285, 461],
[9, 9, 18, 27, 45, 72, 117, 189, 306, 495]
|
Ca va très bien merci, content que la petite famille se porte à merveille.
A plus tard. |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 09 Juin 2016 11:07 Sujet du message: Suites Fibonacci, Lucas etc... |
|
|
Bonjour ALS : )
Vous êtes toujours aussi génial !
La séquence est une merveille : )
Encore et encore un énième MERCI : )
Prenez soin de vous Professeur et profitez bien du soleil qui revient : )
À bientôt |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 16 Juin 2016 0:40 Sujet du message: |
|
|
Rebonsoir ALS,
Désolé de vous re-solliciter ; c'est pour une autre suite en deux parties s'il vous plaît ;
Ma première suite est définie telle que :
U(0) = 5
U(1) = 13
U(2) = 25
U(n)= U(n-1) + 4*(n+1)
Ainsi par exemple U(3) = U(3-1)+4*(3+1)
= U(2)+4*4
= 25+16 = 41
Voici ce que j'ai commencé à faire :
restart:
Digits:=1000:
f := proc (n) option remember:
f(n-1)+4*(n+1) end :
f(0) := 5:
f(1) := 13:
s := [seq(f(i), i = 0 .. 10)]
Voici donc la première partie de la suite qui renvoie comme résultat
s := [5, 13, 25, 41, 61, 85, 113, 145, 181, 221, 265]
L'autre partie de la suite est en fait une suite de quotient de la première suite par rapport à elle-même, de façon "décalée" ; c'est à dire :
Les premiers éléments seraient :
5/1 ; 13/5 ; 25/13 ; 41/25 ; 61/41..........
Donc en fait Maple devrait renvoyer deux suites selon le nombre d'éléments qu'on lui demanderait
S1 = [5 ; 13 ; 25 ; 41 ; 61..... ]
S2 = [5/1 ; 13/5 ; 25/13 ; 41/25 ; 61/41......... ]
Par contre Maple me renvoie une erreur :
"Error, (in f) too many levels of recursion"
Quand je fais varier "i" d'un intervalle trop "grand" , par exemple :
s := [seq(f(i), i = 1000000 .. 1000010 )]
Merci Professeur pour votre inestimable aide : ) |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 16 Juin 2016 7:49 Sujet du message: |
|
|
Bonjour,
Voici la procédure suites(n,p) qui affiche les termes des 2 suites pour les indices entres n et p.
Code: |
> restart:
> Digits:=1000:
>
> suites:=proc(n::nonnegint, p::nonnegint)
> local f, s1,s2;
>
> f := proc (i) option remember:
> if i=0 then 5 else
> f(i-1)+4*(i+1) end if
> end proc:
>
> s1 := [seq(f(i), i = n .. p)];
>
> if n=0 then s2:=[f(0),seq(f(i+1)/f(i), i=0..p-1)] else
> s2:=[seq(f(i+1)/f(i), i=n..p)] end if;
>
> s1,s2
> end proc:
>
> suites(0,10);
[5, 13, 25, 41, 61, 85, 113, 145, 181, 221, 265],
25 41 61 85 113 145 181 221 265
[5, 13/5, --, --, --, --, ---, ---, ---, ---, ---]
13 25 41 61 85 113 145 181 221
> suites(8,20);
[181, 221, 265, 313, 365, 421, 481, 545, 613, 685, 761, 841, 925],
221 265 313 365 421 481 545 613 685 761 841 925
[---, ---, ---, ---, ---, ---, ---, ---, ---, ---, ---, ---,
181 221 265 313 365 421 481 545 613 685 761 841
1013
----]
925
> suites(47600,47610);
Error, (in f) too many levels of recursion
|
Hélàs, je pense que la pile du calculateur va saturer à cause de la récursivité (bien qu'on ait utilisé l'option remember dans f). Ceci se produit chez moi à partir de 47600.
Il faudrait programmer f de façon non récursive, mais le temps de calcul va devenir très long pour les grandes valeurs de n,p.
La suite proposée f(0)=5, f(i)-f(i-1)=4(i+1) pour i>0 permet le calcul effectif de f(n) en fonction de n.
En effet sum( f(i)-f(i-1),i=1..n)=4*sum(i+1,i=1..n), donc
f(n)-f(0)=4*sum(i,i=1..n)+4*n=2*n*(n+1)+4*n
Ainsi f(n)=f(0)+2*n^2+6*n = 2*n^2+6*n+5.
Ce qui permet de résoudre le problème des "too many levels of recursion" :
Code: |
> restart:
> Digits:=1000:
>
> suites:=proc(n::nonnegint, p::nonnegint)
> local f, s1,s2;
>
> f := proc (i) option remember:
> 2*i^2+6*i+5
> end proc:
>
> s1 := [seq(f(i), i = n .. p)];
>
> if n=0 then s2:=[f(0),seq(f(i+1)/f(i), i=0..p-1)] else
> s2:=[seq(f(i+1)/f(i), i=n..p)] end if;
>
> s1,s2
> end proc:
>
> suites(0,10);
[5, 13, 25, 41, 61, 85, 113, 145, 181, 221, 265],
25 41 61 85 113 145 181 221 265
[5, 13/5, --, --, --, --, ---, ---, ---, ---, ---]
13 25 41 61 85 113 145 181 221
> suites(8,20);
[181, 221, 265, 313, 365, 421, 481, 545, 613, 685, 761, 841, 925],
221 265 313 365 421 481 545 613 685 761 841 925
[---, ---, ---, ---, ---, ---, ---, ---, ---, ---, ---, ---,
181 221 265 313 365 421 481 545 613 685 761 841
1013
----]
925
> suites(1000000,1000010);
[2000006000005, 2000010000013, 2000014000025, 2000018000041,
2000022000061, 2000026000085, 2000030000113, 2000034000145,
2000010000013
2000038000181, 2000042000221, 2000046000265], [-------------,
2000006000005
2000014000025 2000018000041 2000022000061 2000026000085
-------------, -------------, -------------, -------------,
2000010000013 2000014000025 2000018000041 2000022000061
2000030000113 2000034000145 2000038000181 2000042000221
-------------, -------------, -------------, -------------,
2000026000085 2000030000113 2000034000145 2000038000181
2000046000265 2000050000313
-------------, -------------]
2000042000221 2000046000265
|
On voit tout de suite que la seconde suite a pour limite 1 car f(n)~2*n^2 en l'infini.
A bientôt. |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 16 Juin 2016 19:24 Sujet du message: |
|
|
Bonsoir ALS,
[5, 13, 25, 41, 61, 85, 113, 145, 181, 221, 265],
[5, 13/5, 25/13, 41/25, 61/41, 85/61, 113/85, 145/113, 181/145, 221/181, 265/221]
C'est Magnifique : )
Merci Professeur pour tout : )
Par rapport à ces suites ; si on prend l'équation diophantienne E1:
E1 : py = x² - 1
Et la fonction f(x) = sqrt(px+1)
Avec p étant un nombre semi-premier
Si on considère les points de la fonction f(x) qui sont des solutions non triviales de E1, et que l'on considère ces points deux à deux de façon ordonnée par exemple :
A(Xa ; Ya)
B(Xb ; Yb)
C(Xc ; Yc)
D(Xd ; Yd)
E(Xe ; Ye)
F(Xf ; Yf)
etc...
Alors le rapport des distances entre
(DC/AB) = sqrt(5)
(EF/DC) = sqrt(13/5)
etc les rapports sont les racines carrées de la suite 2.
De même, il y à une autre suite tout aussi intéressante qui a un rapport avec E1 :
S3 = [ 5 ; 17 ; 37 ; 65....]
Plus précisément
S3 = [ 2*sqrt(5) ; 2*sqrt(17) ; 2*sqrt(37) ; 2*sqrt(65)....]
La suite S3 est telle que S(n) = 2*sqrt((2n)² +1)
c'est à dire 2 fois la racine carrée du carré des nombres pairs ajouté d'une unité.
En résumé si "x" est la plus petite valeur solution non triviale de E1 strictement supérieur à 0 ; alors toutes les autres valeurs solutions pourraient être définies par un rapport de "x" et des éléments des suites en question...
J'essaierai de faire un article plus rigoureux et clair sur le site internet dédié à la factorisation :
http://factorisation.free.fr
A bientôt Professeur : ) |
|
Revenir en haut de page |
|
 |
|
|
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum
|

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - ©
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|