[go: up one dir, main page]

0% ont trouvé ce document utile (0 vote)
73 vues5 pages

Simulating The Syracuse Conjecture in Python

Cet article explore la suite de Syracuse, une séquence mathématique fascinante liée à la conjecture de Collatz, et présente une simulation en Python pour en visualiser les propriétés. Malgré les efforts de nombreux mathématiciens, la conjecture reste non prouvée, et des variantes de la suite montrent des comportements différents. L'utilisation de Python permet d'optimiser les calculs et d'explorer cette conjecture complexe, tout en ouvrant des pistes pour des recherches futures.

Transféré par

Razak Tarpaga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
73 vues5 pages

Simulating The Syracuse Conjecture in Python

Cet article explore la suite de Syracuse, une séquence mathématique fascinante liée à la conjecture de Collatz, et présente une simulation en Python pour en visualiser les propriétés. Malgré les efforts de nombreux mathématiciens, la conjecture reste non prouvée, et des variantes de la suite montrent des comportements différents. L'utilisation de Python permet d'optimiser les calculs et d'explorer cette conjecture complexe, tout en ouvrant des pistes pour des recherches futures.

Transféré par

Razak Tarpaga
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
Vous êtes sur la page 1/ 5

Simulation de la suite de Syracuse en

Python
La suite de Syracuse, également connue sous le nom de conjecture de Collatz, conjecture
d'Ulam, problème 3n+1 ou encore algorithme de Hasse, est une séquence mathématique
fascinante qui présente un comportement apparemment chaotique malgré sa définition simple.
Cet article explore la suite de Syracuse, explique comment la simuler en Python et visualise ses
propriétés uniques.

Origines et Historique de la Conjecture de Syracuse


La conjecture de Syracuse tire son nom de l'université de Syracuse, où le mathématicien Lothar
Collatz a commencé à l'étudier dans les années 1930. Bien que Collatz soit souvent crédité de
sa découverte, des traces de la conjecture apparaissent dans les travaux antérieurs d'autres
mathématiciens, notamment Helmut Hasse et Stanisław Ulam. Malgré son apparente simplicité,
la conjecture de Syracuse reste non prouvée à ce jour, ce qui en fait l'un des problèmes non
résolus les plus célèbres en mathématiques.

La conjecture de Syracuse : une énigme


mathématique
La conjecture de Syracuse stipule que pour tout entier positif initial, la séquence suivante finira
toujours par atteindre le cycle 4, 2, 1 :
●​ Si le nombre est pair, divisez-le par 2.
●​ Si le nombre est impair, multipliez-le par 3 et ajoutez 1.
Malgré sa simplicité apparente, cette conjecture n'a jamais été prouvée mathématiquement.
Des efforts considérables ont été déployés pour la démontrer ou la réfuter, mais elle continue de
défier les mathématiciens du monde entier.

Tentatives de Preuve et Défis Mathématiques


Au fil des décennies, de nombreux mathématiciens ont tenté de prouver la conjecture de
Syracuse, utilisant diverses approches et outils mathématiques. Parmi les plus notables, on
peut citer les travaux de Paul Erdős, Jeffrey Lagarias et Terence Tao. Cependant, aucune de
ces tentatives n'a abouti à une preuve complète. La difficulté de la conjecture réside dans le
comportement apparemment aléatoire et imprévisible des séquences générées, qui rendent
difficile l'établissement de schémas ou de propriétés générales.

Simulation en Python
Python, avec ses bibliothèques puissantes et sa syntaxe accessible, est un outil idéal pour
explorer la suite de Syracuse. Voici une implémentation d'une fonction Python pour générer la
suite :
def syracuse(n):​
"""​
Calcule la suite de Syracuse pour un entier donné.​

Args:​
n: L'entier de départ.​

Returns:​
Une liste contenant la suite de Syracuse.​
"""​
sequence =​
while n != 1:​
if n % 2 == 0:​
n = n // 2​
else:​
n = 3 * n + 1​
sequence.append(n)​
return sequence​

Cette fonction prend un entier n comme argument et renvoie une liste contenant la suite de
Syracuse générée à partir de cet entier.

Étapes de Recherche pour la Simulation


La simulation de la suite de Syracuse en Python a nécessité plusieurs étapes de recherche :
1.​ Recherche d'informations sur la conjecture de Syracuse: Cette étape a permis de
comprendre le fonctionnement de la suite et son importance mathématique.
2.​ Recherche d'exemples de code Python: Des exemples de code ont été étudiés pour
identifier les meilleures pratiques et les techniques d'implémentation.
3.​ Implémentation de la fonction Python: La fonction syracuse a été implémentée en
Python pour générer la suite.
4.​ Visualisation de la suite: La bibliothèque Matplotlib a été utilisée pour visualiser la suite
et observer son comportement.
5.​ Exploration de variantes: Des variantes de la suite de Syracuse ont été explorées et
implémentées en Python.
6.​ Optimisation du code: Des techniques d'optimisation ont été envisagées pour améliorer
les performances du code, notamment pour les grands nombres.

Visualisation avec Matplotlib


La visualisation de la suite de Syracuse peut révéler des motifs intéressants. Utilisons
Matplotlib, une bibliothèque de traçage Python, pour visualiser la suite pour l'entier initial 27 :
import matplotlib.pyplot as plt​

sequence = syracuse(27)​

plt.plot(sequence)​
plt.xlabel("Étape")​
plt.ylabel("Valeur")​
plt.title("Suite de Syracuse pour n = 27")​
plt.show()​

Ce code génère un graphique montrant l'évolution de la suite de Syracuse pour n = 27. On


observe que la suite atteint des valeurs élevées (jusqu'à 9232) avant de finalement converger
vers 1 après 111 étapes. La visualisation met en évidence le comportement oscillatoire et
imprévisible de la suite, malgré la simplicité de sa définition.

Exploration de variantes
Il existe des variantes intéressantes de la suite de Syracuse. Par exemple, on peut modifier la
règle pour les nombres impairs en multipliant par 5 et en ajoutant 1 au lieu de multiplier par 3 et
d'ajouter 1.
def syracuse_variante(n):​
"""​
Calcule une variante de la suite de Syracuse.​

Args:​
n: L'entier de départ.​

Returns:​
Une liste contenant la suite modifiée.​
"""​
sequence =​
while n != 1:​
if n % 2 == 0:​
n = n // 2​
else:​
n = 5 * n + 1 # Modification de la règle​
sequence.append(n)​
return sequence​

Cette fonction implémente la variante décrite ci-dessus. En appliquant cette variante à n = 27,
on obtient une séquence qui atteint des valeurs encore plus élevées que la suite originale et qui
converge vers 1 après 18 étapes. Cette comparaison montre comment une modification
apparemment mineure de la règle peut avoir un impact significatif sur le comportement de la
suite.
import matplotlib.pyplot as plt​

sequence_variante = syracuse_variante(27)​

plt.plot(sequence_variante)​
plt.xlabel("Étape")​
plt.ylabel("Valeur")​
plt.title("Variante de la Suite de Syracuse pour n = 27")​
plt.show()​

Optimisation pour les grands nombres


Pour les grands nombres, le calcul de la suite de Syracuse peut prendre du temps. Des
techniques d'optimisation peuvent être utilisées pour améliorer les performances du code. Par
exemple, la mémoïsation peut être utilisée pour stocker les résultats des calculs précédents et
éviter les calculs redondants. La mémoïsation consiste à créer un dictionnaire qui stocke les
valeurs de la suite déjà calculées. Lorsqu'une valeur est nécessaire, le programme vérifie
d'abord si elle est présente dans le dictionnaire. Si c'est le cas, la valeur est récupérée
directement, sinon elle est calculée et ajoutée au dictionnaire. Cette technique permet de
réduire considérablement le temps de calcul pour les grands nombres.
def syracuse_memoisation(n, memo={}):​
"""​
Calcule la suite de Syracuse avec mémoïsation.​

Args:​
n: L'entier de départ.​
memo: Un dictionnaire pour stocker les résultats précédents.​

Returns:​
Une liste contenant la suite de Syracuse.​
"""​
if n in memo:​
return memo​
sequence =​
while n != 1:​
if n % 2 == 0:​
n = n // 2​
else:​
n = 3 * n + 1​
if n in memo:​
sequence.extend(memo)​
break​
sequence.append(n)​
memo = sequence​
return sequence​

Conclusion
La suite de Syracuse est un exemple fascinant de problème mathématique simple avec un
comportement complexe. Python fournit les outils nécessaires pour simuler, visualiser et
explorer cette suite, permettant ainsi une meilleure compréhension de ses propriétés. L'étude
de la suite de Syracuse et de ses variantes peut conduire à de nouvelles découvertes
mathématiques et à une appréciation plus profonde de la beauté et de la complexité des
mathématiques. Malgré les nombreuses tentatives de preuve, la conjecture de Syracuse reste
un mystère, stimulant la curiosité et l'imagination des mathématiciens amateurs et
professionnels. L'exploration de cette conjecture à travers des simulations informatiques,
comme celles présentées dans cet article, offre une voie prometteuse pour mieux comprendre
son comportement et, peut-être un jour, percer ses secrets.
Des pistes de recherche futures pourraient inclure l'analyse du temps nécessaire aux
séquences pour atteindre 1, l'étude de la fréquence des différents nombres dans les
séquences, et l'exploration d'autres variantes de la suite de Syracuse.

Vous aimerez peut-être aussi