Aide-mémoire de Python
I. La classe « list »
1. Généralités
Attention : en langage Python, le premier élément de la liste L a pour indice 0 ; len(L)
désigne la longueur de la liste L ; l’indice du dernier élément de la liste L est donc
len(L)-1 (ou plus simplement -1) ; l’indice de l’avant dernier-élément est -2, de
l’antépénultième est -3, et ainsi de suite
2. Listes spéciales
[] : liste vide
[a]*n : liste de longueur n ne contenant que des a
[i for i in range(a,b)] si a et b sont des entiers tels que a<b : renvoie la liste [a,a+1,…b-
1]
Listes par compréhension : par exemple : [i for i in range(1,20) if i>=5] renverra la
liste [5,6,7,8,9,10,11,12,13,14,15,16,17,18,19] (attention, le 20 n’est pas dans la
liste !)
3. Méthodes de la classe list : opérations sur les listes
Si L est une liste, [Link](x) : ajoute l’élément x à la fin de la liste L
Si L est une liste, [Link](i,a) : ajoute l’élément a à la position i dans la liste L.
Si L1 et L2 sont des listes, L1+L2 concatène les listes L1 et L2
[Link](k) renvoie l’élément d’indice k de L et l’enlève de la liste L
[Link](a) enlève une fois la valeur a de la liste L
Si L est une liste, max(L) renvoie le plus grand élément de la liste L
Si L est une liste, min(L) renvoie le plus petit élément de la liste L
Si L est une liste, sum(L) (comme en Scilab !!) renvoie la somme des éléments de la
liste L
Extraction (slicing en anglais !) si L est une liste L[i :j] désigne la sous-liste de L
constituée des éléments de L d’indices compris entre i et j-1 ; L[i :] désigne la sous-
liste de L constituée des éléments de L d’indices supérieurs ou égaux à i ; L[ :j]
désigne la sous-liste de L constituée des éléments de L d’indice inférieur ou égal à j-1
Si L est une liste, [Link](a) renvoie le nombre d’occurrences de l’élément a de la
liste L
Si L est une liste, [Link](a) renvoie le rang de la première occurrence de a dans la
liste L
Si L est une liste, [Link](a,b,c) : rajoute les éléments a,b,c, à la fin de la liste L
Si L est une liste, [Link]() transforme L en une liste dont les éléments sont ceux de
L mais lus dans le sens inverse.
Si L est une liste, sorted(L) ou encore [Link]() effectue un tri rapide (récursif) des
éléments de la liste L, du plus petit au plus grand.
4. Exercices sur les listes
Exercice 1
a. Ecrire une fonction 𝑐𝑜𝑚𝑝𝑡𝑒_𝑧𝑒𝑟𝑜𝑠 qui étant donné une liste L, renvoie le nombre
d’éléments de L égaux à 0 ; si par exemple L=[1,0,1,0,5,0,2,4,0], la fonction devra
renvoyer 4.
b.
c. Ecrire une fonction 𝑝𝑜𝑠𝑖𝑡𝑖𝑜𝑛𝑠_𝑧𝑒𝑟𝑜𝑠 qui étant donné une liste L, renvoie une
liste contenant les indices des éléments de L égaux à 0 ; par exemple, si
L=[1,2,0,0,1,5,0,3,2,0,1], la fonction devra renvoyer [2,3,6,9].
d. Ecrire une fonction 𝑠𝑢𝑝𝑝𝑟𝑖𝑚𝑒_𝑧𝑒𝑟𝑜𝑠 qui supprime les éléments nuls d’une liste
e. Ecrire une fonction 𝑙𝑖𝑡_𝑎_𝑙_𝑒𝑛𝑣𝑒𝑟𝑠 qui lite les éléments d’une liste dans l’ordre
inverse ; on n’utilisera bien entendu pas l’instruction [Link]() !!
f. Ecrire une fonction 𝑠𝑢𝑖𝑡𝑒_𝑔𝑒𝑜𝑚 qui :
a. Demande à l’utilisateur (utilisatrice) de rentrer un entier a et un entier n ;
b. Renvoie une liste de longueur n dont le premier élément est a, le
deuxième élément est a/2, le troisième élément est a/4, etc…
Exercice 2
a. Ecrire une fonction 𝑚𝑎𝑥𝑖 qui détermine le plus grand élément de L ainsi que le
rang de la première occurrence de ce maximum.
b. Ecrire une fonction 𝑚𝑎𝑥𝑖2 qui détermine le plus grand élément de L ainsi que le
rang de la dernière occurrence de ce maximum
c. Ecrire une fonction 𝑚𝑖𝑛𝑖 qui détermine le plus petit élément de L ainsi que le
rang de la première occurrence de ce minimum
d. Ecrire une fonction 𝑚𝑖𝑛𝑖2 qui détermine le plus grand élément de L ainsi que le
rang de la dernière occurrence de ce minimum
Exercice 3
Ecrire une fonction 𝑠𝑢𝑝𝑝𝑟_𝑑𝑜𝑢𝑏𝑙𝑜𝑛𝑠 qui supprime les doublons d’une liste L
Exercice 4 (conversion d’un entier en liste des chiffres le constituant)
Ecrire une fonction 𝑛𝑜𝑚𝑏𝑟𝑒2𝑙𝑖𝑠𝑡𝑒 qui renvoie une liste contenant les chiffres
composant un nombre entier n rentré en paramètre
Exercice 5 (tris)
a. Ecrire une fonction 𝑡𝑟𝑖_𝑏𝑢𝑙𝑙𝑒𝑠 réalisant le tri par bulles
b. Ecrire une fonction 𝑡𝑟𝑖_𝑖𝑛𝑠𝑒𝑟𝑡𝑖𝑜𝑛 réalisant le tri par insertion
Exercice 6
Dans cet exercice, on considérera des listes composées exclusivement par des 0 et
des 1
a. Ecrire une fonction 𝑙𝑜𝑛𝑔𝑢𝑒𝑢𝑟 renvoyant la longueur de la plus grande série de 1
consécutifs d’une liste L rentrée en paramètre
b. Ecrire une fonction 𝑟𝑒𝑚𝑝𝑙𝑎𝑐𝑒1 remplaçant la première plus longue série de 1
consécutifs par des 2
c. Ecrire une fonction 𝑟𝑒𝑚𝑝𝑙𝑎𝑐𝑒2 remplaçant la dernière plus longue série de 1
consécutifs par des 2
d. Ecrire une fonction 𝑟𝑒𝑚𝑝𝑙𝑎𝑐𝑒3 remplaçant toutes les séries les plus longues
séries de 1 consécutifs par des 2
II. Les librairies fréquemment utilisées
1. La librairie math
Import math as m
[Link](x) : renvoie arctan(x)
[Link](x) : renvoie la partie entière de x
[Link](n) : renvoie n !
[Link](x) : renvoie la racine carrée de x
[Link](x) : renvoie ln(x) si x>0
[Link](x) : renvoie exp(x)…
2. La librairie random
Pour ce qui est aléatoire, on importe le module random par exemple en écrivant
l’instruction :
Import random as rd
[Link]() : génère un réel aléatoire selon la loi 𝑈([0,1])
[Link](a,b): génère un entier aléatoire selon la loi 𝑈([[𝑎, 𝑏]])
[Link](0,1) : génère un nombre réel selon la loi 𝑁(0,1)
[Link](L) : choisit aléatoirement un élément de la liste L
3. La librairie numpy
A. Résumé
La librairie numpy permet d’utiliser avec une syntaxe voisine les instructions de
Matlab/Octave/Scilab ; on doit d’abord importer le module numpy par l’instruction (par
exemple) :
Import numpy as np
[Link]() : transforme une liste en tableau(sorte de matrice) numpy
[Link](a,b,n) : matrice ligne (on dirait vecteur en Scilab) de n valeurs uniformément
réparties entre a et b (inclus)
[Link]([n,m]) : crée la matrice nulle à n lignes et m colonnes
[Link](n) : crée la matrice carrée identité d’ordre n
[Link](L) : crée la matrice diagonale carrée dont les coefficients diagonaux sont les éléments de
la liste L
[Link](M) : renvoie la transposée de M
[Link](M) : renvoie la somme des coefficients de M
[Link](M,P) : renvoie le produit matriciel MP
[Link](M) : renvoie le produit de tous les coefficients de M
[Link](M) : renvoie le plus grand coefficient de M
[Link](M) : renvoie le plus petit coefficient de M
[Link](M) : renvoie le format de la matrice M (liste de longueur 2 contenant le nombre de
lignes et le nombre de colonnes de M)
[Link](M) : renvoie le nombre de coefficients de M
B. Version plus détaillée
a. Déclaration des vecteurs et des array (matrices, tableaux)
Nous utiliserons ici 𝑎𝑟𝑟𝑎𝑦 pour travailler avec les matrices ; attention, il existe aussi
matrix, permettant de faire des calculs plus poussés qu’avec 𝑎𝑟𝑟𝑎𝑦.
Par exemple, la syntaxe 𝑣 = 𝑛𝑝. 𝑎𝑟𝑟𝑎𝑦([2,3, −1]) définit une matrice à une ligne
dont les coefficients sont 2,3,-1 ; une matrice à une ligne sera appelée un vecteur ; la
syntaxe 𝑎 = 𝑛𝑝. 𝑎𝑟𝑟𝑎𝑦([[1,2,3], [4,5,6]]) définit une matrice à deux lignes dont la
première ligne est le vecteur [1,2,3] et dont la deuxième ligne est le vecteur [4,5,6]
On accède au type de la matrice 𝑎 avec la syntaxe 𝑛𝑝. 𝑠ℎ𝑎𝑝𝑒(𝑎) ; on peut aussi
disposer du nombre de lignes de 𝑎 avec la syntaxe 𝑛𝑝. 𝑠𝑖𝑧𝑒(𝑎, 0) et du nombre de
colonnes de 𝑎 avec la syntaxe 𝑛𝑝. 𝑠𝑖𝑧𝑒(𝑎, 1) ; si v est un vecteur, on peut aussi écrire
𝑙𝑒𝑛(𝑣) pour accéder au nombre d’éléments de v.
- Si v est un vecteur, v[0] est le premier élément de ce vecteur, v[1] le deuxième,
etc…
- Si a est un tableau quelconque, 𝑣[𝑖, 𝑗] désigne le coefficient de 𝑎 situé à la ligne i
et à la colonne j.
- On peut effectuer de l’extraction (𝑠𝑙𝑖𝑐𝑖𝑛𝑔 en anglais) de manière analogue à
l’extraction sur les listes ; si par exemple a est une matrice, l’instruction 𝑎[2: ,3]
désigne le vecteur constitué des coefficients de la colonne 3 situés à partir de la
ligne 2.
b. Conversion d’un vecteur en liste et d’une liste en vecteur :
i. Conversion d’une liste en vecteur
Si L est une liste, l’instruction 𝐿 = 𝑛𝑝. 𝑎𝑟𝑟𝑎𝑦(𝐿) transforme la liste (Python) L en
vecteur dont les éléments sont ceux de la liste initiale. On peut s’en assurer en tapant
𝑡𝑦𝑝𝑒(𝐿) qui prouvera que L est maintenant une instance de 𝑛𝑑𝑎𝑟𝑟𝑎𝑦.
ii. Conversion d’un vecteur en liste
Si v est un vecteur, l’instruction 𝑣 = 𝑣. 𝑡𝑜𝑙𝑖𝑠𝑡() transforme le vecteur v en liste
(appelée toujours v) ; il est possible de s’en assurer en tapant l’instruction type(v) qui
montrera bien que v est maintenant une instance de la classe 𝑙𝑖𝑠𝑡 .
c. Copie d’un vecteur (indépendante du vecteur initial)
L’instruction 𝑤 = 𝑛𝑝. 𝑐𝑜𝑝𝑦(𝑣) renvoie un vecteur 𝑤, copie indépendante du vecteur
𝑣 au sens où si 𝑤 est modifié, 𝑣 restera inchangé. Cela vaut également pour des
copies de tableaux quelconques.
d. Matrices (array) remarquables
- 𝑛𝑝. 𝑧𝑒𝑟𝑜𝑠([𝑛, 𝑚]) renvoie une matrice à n lignes et m colonnes constituée
uniquement de 0 ; 𝑛𝑝. 𝑧𝑒𝑟𝑜𝑠(𝑛) renvoie un vecteur de longueur n constitué
uniquement de 0
- 𝑛𝑝. 𝑜𝑛𝑒𝑠([𝑛, 𝑚]) renvoie une matrice à n lignes et m colonnes constituée
uniquement de 1 ; 𝑛𝑝. 𝑜𝑛𝑒𝑠(𝑛) donne un vecteur de longueur n constitué
uniquement de 1
- 𝑛𝑝. 𝑒𝑦𝑒(𝑛) renvoie la matrice carrée identité d’ordre n ; il est possible aussi
d’écrire 𝑛𝑝. 𝑒𝑦𝑒(𝑛, 𝑚) qui renvoie une matrice rectangulaire à n lignes et m
colonnes de « diagonale principale » constituée de 1, tous les autres
coefficients étant nuls.
- 𝑛𝑝. 𝑟𝑎𝑛𝑑𝑜𝑚. 𝑟𝑎𝑛𝑑𝑜𝑚(𝑛) renvoie un vecteur de longueur n dont les coefficients
sont aléatoirement choisis dans l’intervalle [0,1] selon la loi uniforme à densité
U(0,1)
- 𝑛𝑝. 𝑟𝑎𝑛𝑑𝑜𝑚. 𝑟𝑎𝑛𝑑𝑜𝑚([𝑛, 𝑚]) renvoie une matrice de type (n,m) dont les
coefficients sont aléatoirement choisis dans l’intervalle [0,1] selon la loi uniforme
à densité U(0,1)
e. Vecteurs dont les éléments forment une progression arithmétique
- La syntaxe 𝑛𝑝. 𝑎𝑟𝑎𝑛𝑔𝑒(𝑎, 𝑏, 𝑟) (où r n’est pas nécessairement un entier comme
avec range de Python) renvoie un vecteur dont les éléments forment une suite
arithmétique de raison r, de premier terme a et de dernier terme le plus grand
élément de la forme a+kr qui est strictement inférieur à b
- La syntaxe 𝑛𝑝. 𝑙𝑖𝑛𝑠𝑝𝑎𝑐𝑒(𝑎, 𝑏, 𝑛𝑢𝑚 = 𝑁) (où cette fois-ci N est un entier naturel
non nul) renvoie un vecteur contenant N points équidistants, le premier point
étant égal à a et le dernier point étant égal à b.
f. Application d’une fonction simple aux éléments d’un vecteur
Si 𝑋 est un vecteur :
- L’instruction 𝑋 ∗∗ 2 renvoie le vecteur de même longueur que X dont les
coefficients sont les carrés des coefficients de X
- L’instruction 𝑛𝑝. 𝑐𝑜𝑠(𝑋) renvoie le vecteur de même longueur que X dont les
coefficients sont les cosinus des coefficients de X
- L’instruction 𝑛𝑝. 𝑠𝑞𝑟𝑡(𝑋) renvoie le vecteur de même longueur que X dont les
coefficients sont les racines carrées des coefficients de X (dès lors que les
coefficients de X sont positifs ou nuls)
g. Opérations simples sur les vecteurs et les array :
i. On peut additionner des vecteurs 𝑥 et 𝑦 de même longueur coefficient
par coefficient en utilisant la syntaxe : 𝑥 + 𝑦
ii. On peut multiplier des vecteurs 𝑥 et 𝑦 de même longueur coefficient par
coefficient en utilisant la syntaxe : 𝑥 ∗ 𝑦
iii. On peut additionner des matrices 𝑎 et 𝑏 de même type coefficient par
coefficient en utilisant la syntaxe : 𝑎 + 𝑏
iv. Produit de deux matrices 𝑀, 𝑁 : 𝑛𝑝. 𝑑𝑜𝑡(𝑀, 𝑁)
h. Concaténation de deux matrices M,N :
- Lorsque les nombres de colonnes de M et N sont égaux, on peut par exemple placer
N en dessous de M avec la syntaxe : 𝑛𝑝. 𝑐𝑜𝑛𝑐𝑎𝑡𝑒𝑛𝑎𝑡𝑒((𝑀, 𝑁), 𝑎𝑥𝑖𝑠 = 0)
- Lorsque les nombres de lignes de M et N sont égaux, on peut placer N à côté de M
avec la syntaxe : 𝑛𝑝. 𝑐𝑜𝑛𝑐𝑎𝑡𝑒𝑛𝑎𝑡𝑒((𝑀, 𝑁), 𝑎𝑥𝑖𝑠 = 1)
4. La librairie [Link]
Pratique, pour faire des calculs d’algèbre linéaire, comme son nom l’indique.
On peut, par exemple, importer la librairie 𝑛𝑢𝑚𝑝𝑦. 𝑙𝑖𝑛𝑎𝑙𝑔 avec la syntaxe :
𝑖𝑚𝑝𝑜𝑟𝑡 𝑛𝑢𝑚𝑝𝑦. 𝑙𝑖𝑛𝑎𝑙𝑔 𝑎𝑠 𝑎𝑙
- Inverse d’une matrice inversible M : 𝑎𝑙. 𝑖𝑛𝑣(𝑀)
- Rang d’une matrice M : 𝑎𝑙. 𝑚𝑎𝑡𝑟𝑖𝑥_𝑟𝑎𝑛𝑘(𝑀)
- Puissance nème de la matrice M : 𝑎𝑙. 𝑚𝑎𝑡𝑟𝑖𝑥_𝑝𝑜𝑤𝑒𝑟(𝑀, 𝑛)
- Eléments propre de la matrice M (en deuxième année !) : 𝑎𝑙. 𝑒𝑖𝑔(𝑀)
- Résolution du système 𝑀𝑋 = 𝑌 par la méthode du pivot de Gauss : 𝑎𝑙. 𝑠𝑜𝑙𝑣𝑒(𝑀, 𝑌)
Exercice :
Comme le suggère le programme, nous allons, dans cet exercice, implémenter la méthode
de résolution d’un système (de matrice carrée inversible) par la méthode du pivot de Gauss,
sans pouvoir utiliser 𝑎𝑙. 𝑠𝑜𝑙𝑣𝑒 !
Nous allons donc écrire une fonction 𝐺𝑎𝑢𝑠𝑠(𝑎, 𝑏) qui prend en argument une matrice carrée
inversible 𝑎, une matrice colonne 𝑏, et qui détermine l’unique solution 𝑥 du système 𝑎𝑥 = 𝑏
1. Première phase : échelonnage de la matrice 𝑎
a. Disposer de 𝑛, le nombre de lignes de 𝑎 (qui est aussi le nombres de lignes de 𝑏)
b. Concaténer les matrices 𝑎 et 𝑏 en une seule matrice, appelée encore 𝑎 ; ceci est
très pratique puisque les opérations élémentaires effectuées sur les lignes de 𝑎
pendant le processus d’échelonnage doivent être répercutées sur les lignes de 𝑏.
c. A chaque étape de l’échelonnage, choisir le pivot : on prendra le coefficient de
valeur absolue maximale
d. A la kèmeétape du processus d’échelonnage, on échange la ligne 𝑘 avec la ligne du
pivot
2. Deuxième phase : résolution du système de matrice échelonnée
5. La librairie [Link]
On importe la librairie [Link] par exemple avec la syntaxe :
import [Link] as plt
Nous aurons aussi besoin d’importer la librairie numpy dans cette séance avec la
syntaxe :
import numpy as np
Nous pourrons aussi utiliser [Link]()
1. Tracé de graphes de fonctions y=f(x) (en dimension 2)
a. Fonctions lambda
On utilise directement sur le Shell la syntaxe 𝑓 = 𝑙𝑎𝑚𝑏𝑑𝑎 𝑥 : 𝑛𝑝. 𝑠𝑖𝑛(𝑥)
On peut même utiliser un ou plusieurs paramètres ; par exemple :
𝑔 = 𝑙𝑎𝑚𝑏𝑑𝑎 𝑥, 𝑘 : 1/(1 + 𝑛𝑝. 𝑒𝑥𝑝(−𝑘 ∗ 𝑥))
b. Fonctions définies avec def() :
𝑑𝑒𝑓 𝑓(𝑥) :
𝑟𝑒𝑡𝑢𝑟𝑛 2 ∗ 𝑛𝑝. 𝑠𝑖𝑛(𝑥)
𝑑𝑒𝑓 𝑔(𝑥, 𝑘) :
𝑟𝑒𝑡𝑢𝑟𝑛 1/(1 + 𝑛𝑝. 𝑒𝑥𝑝(−𝑘 ∗ 𝑥))
On peut alors tracer le graphe de f sur un intervalle
Par exemple :
𝑋 = 𝑛𝑝. 𝑙𝑖𝑛𝑠𝑝𝑎𝑐𝑒(0, 𝑝𝑖, 𝑛𝑢𝑚 = 1000) #On peut utiliser 𝑛𝑝. 𝑎𝑟𝑎𝑛𝑔𝑒(𝑎, 𝑏, 𝑟)
𝑌 = 𝑓(𝑋)
𝑝𝑙𝑡. 𝑝𝑙𝑜𝑡(𝑋, 𝑌)
𝑝𝑙𝑡. 𝑠ℎ𝑜𝑤()
Ou bien on peut tracer plusieurs courbes dans la même fenêtre graphique :
𝑓𝑜𝑟 𝑘 𝑖𝑛 𝑟𝑎𝑛𝑔𝑒(5):
𝑧 = ℎ(𝑥, 𝑘)
𝑝𝑙𝑡. 𝑝𝑙𝑜𝑡(𝑥, 𝑧, 𝑙𝑎𝑏𝑒𝑙 = "{}". 𝑓𝑜𝑟𝑚𝑎𝑡(𝑘))
𝑝𝑙𝑡. 𝑙𝑒𝑔𝑒𝑛𝑑()
𝑝𝑙𝑡. 𝑡𝑖𝑡𝑙𝑒("𝐹𝑜𝑛𝑐𝑡𝑖𝑜𝑛𝑠 𝑑’𝑎𝑐𝑡𝑖𝑣𝑎𝑡𝑖𝑜𝑛")
𝑝𝑙𝑡. 𝑠ℎ𝑜𝑤()
Si on veut rendre le repère orthonormé, on peut écrire : 𝑝𝑙𝑡. 𝑎𝑥𝑖𝑠(‘𝑒𝑞𝑢𝑎𝑙’)
On peut aussi définir les limites de l’axe des abscisses et les limites de l’axe des
ordonnées avec les instructions :
𝑝𝑙𝑡. 𝑥𝑙𝑖𝑚(𝑥𝑚𝑖𝑛, 𝑥𝑚𝑎𝑥) et 𝑝𝑙𝑡. 𝑦𝑙𝑖𝑚(𝑦𝑚𝑖𝑛, 𝑦𝑚𝑎𝑥)
On peut faire apparaître une grille sur la fenêtre graphique par l’instruction
𝑝𝑙𝑡. 𝑔𝑟𝑖𝑑()
On peut sauvegarder une figure par l’instruction
𝑝𝑙𝑡. 𝑠𝑎𝑣𝑒𝑓𝑖𝑔(‘𝑛𝑜𝑚_𝑑𝑒_𝑙𝑎_𝑓𝑖𝑔𝑢𝑟𝑒. 𝑝𝑛𝑔 ‘)
2. Représentation des termes d’une suite
a. Différence entre itérations et récursivité
On souhaite reprogrammer la fonction factorielle, accessible avec la syntaxe
𝑛𝑝. 𝑚𝑎𝑡. 𝑓𝑎𝑐𝑡𝑜𝑟𝑖𝑎𝑙(𝑛), où 𝑛 est l’entier naturel dont on cherche la factorielle.
Méthode itérative
𝑑𝑒𝑓 𝑓𝑎𝑐𝑡𝑜1(𝑛) :
𝑓𝑎 = 1
𝑓𝑜𝑟 𝑖 𝑖𝑛 𝑟𝑎𝑛𝑔𝑒(𝑛) :
𝑓𝑎 = 𝑓𝑎 ∗ 𝑖
𝑟𝑒𝑡𝑢𝑟𝑛 𝑓𝑎
Méthode récursive
𝑑𝑒𝑓 𝑓𝑎𝑐𝑡𝑜2(𝑛) :
𝑖𝑓 𝑛 == 0 :
𝑟𝑒𝑡𝑢𝑟𝑛 1
𝑒𝑙𝑠𝑒 :
𝑟𝑒𝑡𝑢𝑟𝑛 𝑛 ∗ 𝑓𝑎𝑐𝑡𝑜2(𝑛 − 1)
Exercice :
Ecrire une fonction 𝑐𝑜𝑒𝑓𝑓_𝑏𝑖𝑛 qui prend en paramètre des entiers 𝑛 𝑒𝑡 𝑘 et qui
𝑛
renvoie ( )
𝑘
b. Suites et graphiques
Exercice : on considère la suite (𝑢𝑛 )𝑛∈ℕ définie par la donnée de 𝑢0 ∈ ℝ et la relation
de récurrence 𝑢𝑛+1 = 1 − 𝑢𝑛2 valable pour tout 𝑛 ∈ ℕ.
1. Ecrire une fonction (itérative ou récursive, au choix !) qui représente sur une
même figure les couples (𝑘, 𝑢𝑘 ) pour tout 𝑘 ∈ [[0, 𝑛]], l’entier naturel n étant
rentré en paramètre de cette fonction
2. Sur une nouvelle figure, dessiner l’escargot permettant de se faire une idée de la
nature de la suite (𝑢𝑛 )𝑛∈ℕ
3. Reprendre les questions 1 et 2 avec les suites de l’exercice 9 de la feuille de TD de
maths sur les suites !
3. Marches aléatoires
Exercice : un mobile, initialement situé à l’origine du repère O, effectue des
déplacements successifs équiprobables d’une unité à droite, en haut, en bas ou à
gauche.
1. Ecrire une fonction qui liste les coordonnées du mobile jusqu’à ce qu’il ait effectué n
déplacements, et qui représente le chemin parcouru par le mobile à l’issue de ces n
déplacements.
2. Modifier la fonction du 1 pour déterminer le plus petit temps de retour à l’origine.
4. Histogrammes – Diagrammes en bâtons
. Exercice :
Générer aléatoirement 300 nombres réels compris entre 145 et 225. Tracer
l’histogramme correspondant à un regroupement des modalités en classes
d’amplitude 10.