NOMBRES – Curiosités, Théorie et Usages

 

Accueil                           DicoNombre            Rubriques           Nouveautés      Édition du: 07/03/2022

Orientation générale        DicoMot Math          Atlas                   Actualités                       M'écrire

Barre de recherche          DicoCulture              Index alphabétique        Références      Brèves de Maths                      

                      

Suite de nombres

 

Débutants

Général

Itérations – Cycles

 

Glossaire

Suites

et Séries

 

INDEX

Rubriques

 

 

Cycle de Syracuse

Procédé de Kaprekar

Cycle des Carrés

Syracuse – Débutant

 

Sommaire de cette page

>>> Utilisation du tableur

 

>>> Programme de calcul  (procédure)

 

>>> Programme avec diverses sorties

>>> Sortie des suites complètes

>>> Sortie  des caractéristiques

>>> Sortie  des records

 

>>> Programme Syracuse temps de vol record

 

Syracuse – développement

Syracuse - variantes

Syracuse – algèbre (2x3y)

Syracuse – Tables

Syracuse et nombre 27

Syracuse – Programmation

 

 

 

 

Syracuse et Calculs

 

On explore l'utilisation d'un tableur puis celle d'un logiciel mathématique pour développement le cycle de Collatz ou de Syracuse.

Voir Programmation Syracuse – Débutant  (Tableur et programmation)

 

 

Extension fractale du cycle de Collatz

 

Voir Fractales

Source image: Collatz and self-similariry – Inigio Quilez – Vidéo

 

 

 TABLEUR (Excel) et Syracuse

 

*    Placer les nombres en colonne A, par exemple de 1 à 15 (ici en rouge).

*           Tapez 1 en A1, puis B en A2,

*           Sélectionnez les deux cellules A1 et A2 avec la souris,

*           Tirez la poignée en bas à droite avec la souris jusqu'à obtenir le nombre 15 dans la fenêtre mobile.
 

*    Tapez la formule indiquée en B1: SI (MOD …); elle s'affiche dans la fenêtre fx, en haut de la feuille de calcul. Explications:

*           MOD(A1;2) donne le reste de la division par 2,

*           Si le reste est égal à 1 (vrai en logique) alors on multiplie par 3 et on ajoute 1; sinon on divise par 2.

*    Composez le tableau:

*           Sélectionnez la case B1,

*           Tirez la poignée en bas à droite vers le bas,

*           Sélectionnez toutes ces nouvelles cases en colonne B

*           Tirez sur la poignée en bas à droite vars la droite pour former les colonnes C à T.

*    Observation du résultat

*           Coloriez en rose les fin de ligne commençant après avoir rencontré un 1.
 

 

Copie d'écran du résultat

 

 

 

 

Programmation – Procédure et liste

 

Commentaires

Ce programme comprend une procédure qui pour un nombre n renvoie la liste des nombres successifs du cycle de Syracuse.

 

Procédure

La boucle est engagée tant que le nombre du cycle n'est pas égal à 1.
Le calcul est réalisé avec doublement du nombre si le nombre (m ) est pair sinon il est multiplié par 3 et incrémenté.

Le nouveau nombre est adjoint à la liste L, laquelle en fin de procédure est émise vers la sortie (return)

 

Programme

Investigation pour les nombres de 15 à 20 en imprimant pour chacun: sa valeur, la quantité de termes dans la liste et la liste des termes du cycle de Syracuse.

 

 

Résultats

15, 18, [15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1]

16, 5, [16, 8, 4, 2, 1]

17, 13, [17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

18, 21, [18, 9, 28, 14, 7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

19, 21, [19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]

20, 8, [20, 10, 5, 16, 8, 4, 2, 1]

 

 

Voir Introduction à la programmation / Syracuse – Record de temps de vol

 

  

Programme de calcul de la suite

de Syracuse avec diverses sorties

 


> #Syracuse

> 

> #####Paramètre à fixer

>

> #Impression de la suite complète si Pchaine = 1, sinon mettre 0:

>     Pchaine:=1:

> # Impression que des records en temps de vol si TvolRec =1, sinon mettre 0:

>     TvolRec:=0:

> # Exploration jusqu'à nmax:

>     nmax:=50:

> # Longueur max de la séquence 200 par défaut, mettre davantage si ça bloque:

>     altitudemax:=200:

>

>     syr:=array(1..altitudemax):

>     tempvolmax:=0:

>    

> #####Début du programme

>

> #Exploration des nombres n:

> for n from 1 to nmax do

>

> #recherche de la suite des nombres associés à n:

>     for i from 1 to altitudemax do syr[i]:=0:od:

>    

>     T:=n: i:=1:

>     while T<>1 do

>       if frac(T/2)=0 then T:=T/2 else T:=3*T+1 fi:

>       syr[i]:=T: i:=i+1:

>       od:

> #temps de vol

>     tvol:=1:  

>     while syr[tvol]<>0 do

>       tvol:=tvol+1

>     od:

>     tvol:=tvol-1:    

>        S:=array(1..tvol+1):

>        for i from 1 to tvol  do S[tvol+1-i]:=syr[i] od:

>        S[tvol+1]:=n:

> #hauteur de vol:

>     haut:=0:mont:=0:

>     for i from 1 to tvol  do

>        if S[i]>haut then haut:=S[i]:mont:=i:fi:

>     od:

>

> #sortie des caractéristiques du nombre n

>    if TvolRec =1 then    

>        if tvol>tempvolmax then tempvolmax:=tvol:

>            print( record,n,tvol,haut,mont)

>        fi:

>    else   

>        if Pchaine=1 then print(n,tvol,haut,mont,S)

>        else print(n,tvol,tempvolmax,haut,mont)

>        fi:

>    fi:

> od:

> lprint(fin,n):

Voir Introduction à la programmation

 

 

Sortie des suites complètes

 

*    On conserve les paramètres du programme ci-dessus

 

Voir Suite de Syracuse pour n de 1 à 50
 

 

 

 

Sortie  des caractéristiques

 

*    On positionne le paramètre:  Pchaine:= 0

*    On obtient la liste suivante:


 

*    On trouve dans l'ordre:

n, tvol, haut, mont:

 

avec:

n: le nombre considéré

tvol: la longueur de la suite ou temps de vol

haut: valeur maximale de la suite, ou hauteur de vol

mont:  longueur de la suite pour atteindre la valeur maximale de la suite

 

1, 0, 0, 0

2, 1, 1, 1

3, 7, 16, 5

4, 2, 2, 2

5, 5, 16, 5

6, 8, 16, 5

7, 16, 52, 12

8, 3, 4, 3

9, 19, 52, 12

10, 6, 16, 5

11, 14, 52, 12

12, 9, 16, 5

13, 9, 40, 9

14, 17, 52, 12

15, 17, 160, 11

16, 4, 8, 4

17, 12, 52, 12

18, 20, 52, 12

19, 20, 88, 18

20, 7, 16, 5

 

 

 

SORTIE  DES RECORDS

 

*    On positionne le paramètre TvolRec:= 1

*    On obtient la liste suivante avec les records en deuxième colonne:

Voir Programme complet ci-dessous

 

 
2, 1, 1, 1

3, 7, 16, 5

6, 8, 16, 5

7, 16, 52, 12

9, 19, 52, 12

18, 20, 52, 12

25, 23, 88, 18

27, 111, 9232, 35 Remarquable car le saut est important de 23 à 111.

54, 112, 9232, 35

73, 115, 9232, 35

 97, 118, 9232, 35

129, 121, 9232, 35

171, 124, 9232, 35

231, 127, 9232, 35

313, 130, 9232, 35

327, 143, 9232, 35

649, 144, 9232, 35

703, 170, 250504, 89

871, 178, 190996, 148

 

Voir Syracuse – Record de temps de vol

 

 

Programme Syracuse temps de vol record

But

Avec Maple, éditer la liste des records de temps de vol de la suite de Syracuse.

 

But

Procédure de calcul de l'image de n selon l'algorithme Syracuse.

Programme principal: initialisation du record à 0 et de la liste des records, vide.

boucle selon besoin (ici 1000).

Ouverture d'une liste avec le nombre de départ en premier élément.

Itération Syracuse tant que l'image n'atteint pas le 1, en limitant la recherche à 1000 itérations (précaution).

La liste L enregistre les images. On note q la quantité d'éléments dans L.

Si cette quantité est supérieure au précédent record, le nouveau record est validé et enregistré.

La liste R est éditée en fin de programme.

Voir ProgrammationIndex

 

 

 

 

Retour

*         Cycle de Syracuse

Voir

*         Syracuse – Nombre 27

Sites

*           Voir Liste en page d'introduction

Cette page

http://villemin.gerard.free.fr/Wwwgvmm/Iteration/Syracus2.htm