Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Suites Fibonacci, Lucas etc...

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux...
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 08 Juin 2016 15:35    Sujet du message: Suites Fibonacci, Lucas etc... Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 09 Juin 2016 6:03    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 09 Juin 2016 11:07    Sujet du message: Suites Fibonacci, Lucas etc... Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 16 Juin 2016 0:40    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 16 Juin 2016 7:49    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 16 Juin 2016 19:24    Sujet du message: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux... Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
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


phpBB

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.