Exercice 1 : Logique¶

Question 1 : Écrire une fonction implique(a, b) qui prend en entrée deux valeurs booléennes a et b et qui retourne la valeur de logique de "$a$ implique $b$" ($a \implies b$).

In [ ]:
 

Exercice 2 : Portée des variables¶

Question 1 : Créez deux variables A et B initalisées avec la liste vide. Puis, exécutez les deux fonctions suivantes sur A et B et affichez les valeurs de A et B après exécution.

Commentez ce que vous obtenez.

In [1]:
def fonction_1(L):
    L.append(0)
    return L

def fonction_2(L):
    L = L + [0]
    return L

Exercice 3 : Suite récurrente¶

Question 1 : Écrire une fonction suite(n) qui retourne la liste des n premiers termes de la suite récurrente : $$ u_0 = 1, \quad u_1 = -0.5, \quad u_{n+2} = u_{n+1} - \frac{1}{2} u_n $$

In [ ]:
 

Question 2 : Afficher sous forme de points les valeurs des $20$ premiers termes de la suite, en fonction de $n$.

In [ ]:
 

Exercice 4 : Affichage graphique¶

Question 1 : En utilisant matplotlib.pyplot, tracez le graphe de la fonction $\sin(x)$ pour $x$ entre $0$ et $4 \pi$. Pour trace la fonction, on utilisera un pas de $0.01$.

In [ ]:
 

Question 2 : Écrire une fonction cercle(x, y, r) qui trace un cercle dont le centre est le point de coordonnées $(x,y)$ et dont le rayon est $r$. On pourra utiliser les fonctions sin et cos ainsi que le nombre pi présents dans la bibliothèque math.

Indication : pour que les axes de la figure soient à la même échelle (et ne pas observer une ellipse), il faut utiliser l'instruction plt.axis('equal') avant d'afficher le graphique.

In [ ]:
 

Exercice 5 : Moyenne et écart-type¶

Question 1 : Écrire une fonction moyenne(L) qui calcule la moyenne des éléments d'une liste L.

In [ ]:
 

Question 2 : Écrire une fonction ecart_type(L) qui calcule l'écart-type des éléments d'une liste L.

In [ ]:
 

Question 3 : Afficher l'évolution de la valeur moyenne et de l'écart-type d'une liste de $n$ entiers tirés aléatoirement entre $0$ et $1000$, pour $n$ entre $0$ et $1000$.

In [ ]:
 

Exercice 6 : La suite de Syracuse¶

La suite de Syracuse est une suite récursive de nombres naturels définie par un premier terme $s_0 \ge 1$, et par la relation de récurrence suivante (pour $n \ge 0$) :

  • si $s_n$ est pair, alors $s_{n+1} = s_n/2$,
  • si $s_n$ est impair, alors $s_{n+1} = 3 s_n + 1$.

Par exemple, les $15$ premiers termes de la suite de terme initial $s_0 = 6$ sont :

$$ (6, 3, 10, 5, 16, 8, 4, 2, 1, 4, 2, 1, 4, 2, 1). $$

On observe alors que lorsque la suite atteint le nombre $1$, la suite devient périodique : le motif $(4, 2, 1)$ se répète indéfiniment.

On appelle prépériode les termes $(s_0, s_1, \dots, s_m)$ de la suite de Syracuse, où $s_m$ est la première occurence de la valeur $1$.

Question 1 : Implanter une fonction ̀syracuse qui prend en entrée un entier $s \ge 1$, et qui retourne la liste des termes de prépériode de la suite de Syracuse de terme initial $s$.

In [ ]:
 

Question 2 : Parmi les entiers entre $1$ et $1000$, pour lequel la suite de Syracuse admet-elle la plus grande prépériode ?

In [ ]:
 

Question 3 : À l'aide de la bibliothèque matplotlib, tracer le graphe de la prépériode de la suite de Syracuse (c'est-à-dire, $s_n$ en fonction de $n$) pour $s_0 = 7$.

In [ ]:
 

Question 4 : Tracer sur un même graphe les prépériodes des suites de Syracuse de termes initiaux $s_0 = 8192$ et $s_0 = 1234$.

In [ ]:
 

Question 5 : Tracer le nuage de points de toutes les prépériodes des suites de Syracuse de terme initial $i \in [1, 1000]$. Pour cela, on pourra utiliser la fonction plt.scatter(liste_x, liste_y).

In [ ]: