papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: La suite de Syracuse Sam 2 Fév 2013 - 1:13 | |
| Salut tout le monde. Le code suivant illustre la suite de Syracuse appelée aussi suite de Collatz ou suite 3A+1. Tout est dans le code. - Code:
-
' ****************************************************************************** ' La suite 3A + 1 ou suite de Syracuse ou suite de Collatz
' C'est une suite de nombres entiers définie comme suit : ' 1) Prendre comme valeur initiale un naturel A ' 2) Si A = 1 alors STOP ' 3) Si A est pair, remplacer A par A/2 et aller en 2) ' 4) Si A est impair, remplacer A par 3 * A + 1 et aller en 2) ' ------------------------------------------------------------------------------ ' ' On obtient une suite de nombres qui est appelée : ' - le vol du nombre de départ, ' - les nombres de la suite sont appelés les étapes du vol, ' - le plus grand nombre obtenu dans la suite est appelé l'altitude maximale du vol, ' - le nombre d'étapes avant de passer sous le nombre de départ est appelé la ' durée du vol en altitude.
' Une fois atteint le nombre 1, la suite des valeurs (1,4,2,1,4,2…) se répète ' indéfiniment en un cycle de longueur 3, appelé cycle trivial.
' ****************************************************************************** Init() n% = 27 : ' Essayer d'autres valeurs ' n% = 97 ' n% = 999 ' n% = 214 ' ....
Syracuse(n%) : Affiche() end
' ****************************************************************************** SUB Init() label fin dim n%,c$,s,vol,vol_alt,alt_max,tex$ width 0, 1200 : caption 0,"La suite de Syracuse par PAPYDALL"
container 5 : top 5,10 : left 5,100 : width 5,1000 : height 5,100 : hide 5 alpha 6 : parent 6,5 : top 6,10 : left 6,100 color 6,0,0,0 : font_color 6,255,255,0: font_bold 6 : font_size 6,11
container 10 : top 10,120 : left 10,100 : width 10,1000 : height 10,300 :hide 10 alpha 20 : parent 20,10 : top 20,20 : left 20,100 color 20,0,0,0 : font_color 20,255,255,0: font_bold 20 : font_size 20,11
alpha 21 : parent 21,10 : top 21,20 : left 21,300 hint 21,"c'est le nombre de termes de la suite pour atteindre 1" color 21,0,0,0 : font_color 21,255,255,0: font_bold 21 : font_size 21,11
alpha 22 : parent 22,10 : top 22,20 : left 22,450 hint 22,"c'est le plus petit indice n tel que Un+1 < U0" color 22,0,0,0 : font_color 22,255,255,0: font_bold 22 : font_size 22,11
alpha 23 : parent 23,10 : top 23,20 : left 23,700 hint 23,"c'est la valeur maximale de la suite" color 23,0,0,0 : font_color 23,255,255,0: font_bold 23 : font_size 23,11
alpha 25 : parent 25,10 : top 25, 200 : left 25,50 color 25,0,0,0 : font_color 25,255,255,0: font_bold 25 :font_size 25,11 button 26 : parent 26,10 : top 26,250 : left 26,350 : caption 26,"OK" font_bold 26 : on_click 26,fin
alpha 30 : parent 30,10 : top 30,50 : left 30,20 : width 30,900 END_SUB ' ****************************************************************************** SUB Affiche() dim_local tex$ caption 20,"Suite de Syracuse : " + str$(n%) caption 30,c$ caption 21,"Temps de vol : " + str$(vol-1) caption 22,"Temps de vol en altitude : " + str$(vol_alt - 1) caption 23,"Altitude maximale : " + str$(alt_max)
tex$ = " La suite 3A + 1 ou suite de Syracuse ou de Collatz " tex$ = tex$ + "est une suite de nombres entiers définie comme suit : " +chr$(13) tex$ = tex$ + " 1) Prendre comme valeur initiale un naturel A"+chr$(13) tex$ = tex$ + " 2) Si A = 1 alors STOP" + chr$(13) tex$ = tex$ + " 3) Si A est pair, remplacer A par A / 2 et aller en 2)" + chr$(13) tex$ = tex$ + " 4) Si A est impair, remplacer A par 3 * A + 1 et aller en 2)" caption 6,tex$
tex$ = " La conjecture de Syracuse s’énonce ainsi : " tex$ = tex$ + "quel que soit le nombre que l’on choisisse au départ, " tex$ = tex$ + "on finira par tomber sur 1." +chr$(13) tex$ = tex$ + " Si la conjecture de Syracuse est vraie, quel que soit le nombre initial " tex$ = tex$ + "on doit tomber sur le cycle 4,2,1, appelé cycle trivial." caption 25,tex$ END_SUB ' ****************************************************************************** SUB Syracuse(a%) dim_local u0,flag%,l% if a% < 1 then message "La valeur de A doit être un entier positif":terminate show 5 : show 10 u0 = a% : flag% = 0 : alt_max = a% : vol_alt = 1 while 1 = 1 c$ = c$ + str$(a%)+" " : vol = vol + 1 : l% = len(c$) if mod(vol,30) = 0 then c$ = c$ + chr$(13) if a% < 2 then exit_sub if a%/2 <> int(a%/2) then a% = 3 * a% + 1 : else : a% = a% / 2 if flag% = 0 if a% < u0 then vol_alt = vol : flag% = 1 end_if if a% > alt_max then alt_max = a% end_while end_sub ' ****************************************************************************** fin: terminate ' ******************************************************************************
| |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Fév 2013 - 2:05 | |
| Pour ma petite personne et celles qui ne sont pas scientifiques pour deux sous, peux tu nous expliquer à quoi elle sert et ce qu'elle définie? merki ! | |
|
papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: La suite de Syracuse Sam 2 Fév 2013 - 2:51 | |
| La suite de Syracuse est une simple curiosité mathématique ! Tous les grands mathématiciens de ce monde se sont penchés sur elle. Mais personne (même pas les plus grands mathématiciens de nos jours) n’a pu confirmer ou infirmer la conjecture ! Cette suite cache beaucoup de mystères ! Pour moi, c’était un simple exercice de codage pour éviter d’être rouillé ! Sinon mes mécanismes cesseront de tourner rond ! Si cette explication te laisse sur ta faim, pose la question à Google : Il te fournira une avalanche d’informations sur cette suite. | |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Fév 2013 - 3:20 | |
| Je pensais seulement qu'elle avait une application pratique... PS: Je lis sur wiki que plus d'un mathématicien s'est penché sur cette suite. Ils devaient s'ennuyer ferme pour passer du temps sur un truc pareil, non ? | |
|
papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: La suite de Syracuse Sam 2 Fév 2013 - 14:38 | |
| Non ! Ils étaient (et ils le sont toujours) curieux ! Parce qu'ils sont mathématiciens !!! | |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Fév 2013 - 15:24 | |
| | |
|
papydall
Nombre de messages : 7009 Age : 73 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: La suite de Syracuse Sam 2 Fév 2013 - 16:03 | |
| Je ne vous cherche pas ! Mais puisque vous êtes déjà dehors, sauriez-vous comment vous allez faire pour rentrer ?! | |
|
Yannick
Nombre de messages : 8611 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Sam 2 Fév 2013 - 16:11 | |
| | |
|