Suite de Syracuse

On considère la suite $(u_n)$ définie par $u_0=k$ où $k$ est un nombre entier positif et

  • $u_{n+1}=\dfrac{1}{2}u_n$ si $n$ est pair

  • $u_{n+1}=3u_n+1$ si $n$ est impair

La conjecture de Syracuse affirme que pour n'importe quelle valeur choisie pour l'entier initial $k$, l'algorithme s'arrête en 1 au bout d'un nombre fini d'itérations.

PARTIE A étude préliminaire (sur le document papier)

PARTIE B programmation avec Python

On a rédigé ci-dessous une fonction Python permettant d'obtenir les termes de la suite de Syracuse associée au choix d'un entier $u_0=k$.

In [0]:
def syracuse(k):
    liste=[k]
    while k!=1:
        if k%2==0:
            k=k/2
            liste.append(k)
        else:
            k=3*k+1
            liste.append(k)

    return liste
  1. Expliquer les lignes 4, 5 et 6 de ce programme

Répondre ici:

  1. Vérifier la liste retournée par la fonction pour $n=11$
In [0]:
# Programme:
  1. Écrire une fonction $tempsvol$ qui prend en paramètre un entier $k$ et qui retourne le temps de vol de la suite de Syracuse de premier terme $k$.
In [0]:
# Programme:
  1. Quel est le temps de vol si $u_0= 34~239$ ?

Répondre ici:

  1. Écrire une fonction $altmax$ qui prend en paramètre un entier $k$ et qui retourne l'altitude maximale de la suite de Syracuse de premier terme $k$.
In [0]:
# Programme:
  1. Quelle est l'altitude maximale si $u_0= 15$ ?

Répondre ici:

  1. Écrire une fonction $record$ qui prend en paramètre un entier $N$ et retourne le record d'altitude pour $1 <u_0 \leqslant N$.
In [0]:
# Programme:

Donner la valeur du record pour $N=500$

Répondre ici:

Executer pour différentes valeur de k, le programme ci-dessous qui réalise la représentation graphique associée à la suite de Syracuse avec $u_0=k$

In [0]:
from matplotlib.pyplot import*

def graphevol(k):
    plot(syracuse(k),"ro")
    show()
In [0]:
# Programme:

graphevol()