La suite de Syracuse Présentation La suite de Syracuse est une suite de nombres dont le 1er terme est un entier positif non nul et dont les termes suivants son calculés comme suit : Si le terme précédent est pair, on le divise par 2 pour obtenir le terme courant S’il est impair, on le multiplie par 3 et on ajoute 1 pour obtenir le terme courant. Et on recommence l’opération avec le résultat pour calculer le terme suivant Ce qui est remarquable avec cette suite, c’est que, quel que soit le nombre entier fourni au départ, on finit toujours par obtenir 1 au bout d’un certain nombre d’itérations. Cependant personne n’a pour l’instant réussi à démontrer que c’était vrai pour tous les entiers. Ce genre de situation mathématique que l’on accepte comme vrai sans pour autant avoir pu le démontrer est ce qu’on appelle une conjecture. ✎ Travail n° 1 Apport de connaissances 🎯 Travail à faire : Consulter le document Suite et conjecture de Syracuse / Algorithme Application ✎ Travail n° 2 TD 🎯 Travail à faire : Faire le TD ALGORITHME DE SYRACUSE [1] 💻 Travail n° 3 Représentation graphique dans un tableur 🎯 Travail à faire : Lancer le tableur Excel Mettre les valeurs 1 à 18 dans les cellules B2 à B19. Pour cela : Mettre la valeur 1 dans B2 Copier cette valeur en l’incrémentant dans les cellules situées dessous à l’aide la souris après l’avoir positionné dans le coin inférieur droit de B2 et en étendant la sélection jusqu’à B19 en appuyant à la fois sur son bouton gauche et la touche CTRL du clavier. Mettre la valeur 6 dans la cellule C2 Mettre la formule =SI(MOD(C2;2)=0;C2/2;3*C2+1) dans la cellule C3 La fonction MOD(N1;N2) d'Excel retourne le reste de la division entière de N1 par N2 ⇒ Si elle retourne 0, c’est que N1 et multiple de N2. Positionner la souris dans le coin inférieur droit de la cellule C3 de façon à ce que le signe ‘+’ apparaisse puis étendre la sélection jusqu’à la cellule C19 en restant appuyé sur le bouton gauche de la souris. Copier de la même façon la cellule C3 en D3 puis de D3 à D19 Mettre la valeur 11 dans D2 Résultat attendu Répondre aux questions : Quels sont les “temps de vol” de ces 2 suites de Syracuse avec valeurs initiales 6 et 11 ? Quelles sont les “altitudes maximales” pour ces 2 mêmes suites ? Tracer les représentations des suites dans Excel 💻 Travail n° 4 Représentation graphique en Python On désire tracer en Python la représentation graphique de la suite de Syracuse après avoir demandé à l’utilisateur de fournir sa valeur initiale. Le tracé de cette courbe doit s’étendre uniquement sur le “temps de vol” de la suite. On vous donne le code partiel du script Python : suite-syracuse-courbe.py import matplotlib.pyplot as plt import matplotlib.ticker as ticker print(">>>> Suite de Syracuse <<<<\n"); # Saisie valeur initiale valeurInitiale = int(input("Saisir la valeur initiale (> 1) : ")) # Calcul des termes de la suite À COMPLÉTER # Création d'une figure fig = plt.figure() # Ajout de la courbe de la tension aux bornes du condensateur dans la figure courbeSuite = fig.add_subplot(1 # nrows , 1 # ncols , 1 # index , xscale='linear' , xlabel=r'$itérations$' , ylabel=r'$u_n$' ) # Tracé de la courbe courbeSuite.xaxis.set_major_locator(ticker.MaxNLocator(integer = True)) courbeSuite.plot(range(1, nbIterations+1), suiteSyracuse, "blue") # Configuration des grilles plt.grid(which='major', color='black') plt.minorticks_on() plt.grid(which='minor', color='lightgray') # Affichage de la courbe plt.show() 🎯 Travail à faire : Compléter le code pour calculer les termes de la suite de Syracuse jusqu’à atteindre son “temps de vol”. Consignes : La valeur initiale de la suite est fournie par l’utilisateur et stockée dans la variable valeurInitiale Les termes de la suite seront stockés dans une liste Python nommée suiteSyracuse Le nombre d’itérations nécessaires pour atteindre le “temps de vol” sera stocké dans une variable nommée nbItération Résultat attendu avec une valeur initiale de la suite valant 10 Que peut-on dire sur l’allure de la courbe lorsqu’on fournit une valeur initiale qui est une puissance de 2 ? 💻 Travail n° 5 Recherche “temps de vol” et “altitude” maximaux 🎯 Travail à faire : Faire un script Python qui détermine la valeur initiale — comprise entre 1 et 100 — pour laquelle le “temps de vol” de la suite de Syracuse est maximal. Il suffit de : reprendre la partie du code de l’exercice précédent qui calcule les termes de la suite de Syracuse répéter le traitement pour des valeurs initiales allant de 1 à 100 stocker le “temps de vol” de chacun de ces traitements (→ nombre d’itérations nécessaires pour que la suite atteigne la valeur 1) dans une liste Python chercher et afficher le maximum de cette liste L’indice du maximum d’une liste Python peut être obtenue avec l’expression : uneListe.index(max(uneListe)) Résultat attendu Temps de vol max.(-> 118) atteint pour valeur initiale 97 Compléter le script pour qu’il détermine également la valeur initiale — toujours comprise entre 1 et 100 — qui mène à “l’altitude” maximale dans la suite de Syracuse. Résultat attendu Altitude max.(-> 9232) atteinte pour valeur initiale 27 1. Sujet rédigé par P.Marchadour 🞄 🞄 🞄 Résistances électriques Propagation d’une épidémie