Ces exercices sont à rendre jusqu'au lundi 14/02/2022, 15h00, sur la plateforme Moodle.
Vous devez remplir ce notebook avec vos réponses aux questions.
Avant de déposer vos exercices, veuillez renommer le fichier sous la forme <NOM>_<PRENOM>_semaine3.ipynb
en remplaçant <NOM>
et <PRENOM>
par vos nom et prénom.
Le triangle de Pascal est la donnée de tous les coefficients binomiaux $\binom{n}{k}$, pour $0 \le k \le n \le N$ où $N$ est l'ordre du triangle. On dispose l'ensemble des binomiaux sous-forme de triangle, d'où le nom. Le binomial $\binom{0}{0} = 1$ est disposé en haut à gauche. Puis, sur la ligne suivante on dispose $\binom{1}{0} = 1$ et $\binom{1}{1} = 1$. À la troisième ligne $\binom{2}{0} = 1$, $\binom{2}{1} = 2$, $\binom{2}{2} = 1$, etc.
Pour calculer le triangle, l'idée est d'utiliser la formule de Pascal (une nouvelle fois, d'où le nom) : $$ \binom{n}{k} = \binom{n-1}{k-1} + \binom{n-1}{k} $$ Pour calculer $\binom{n}{k}$, on peut donc sommer deux valeurs précédemment calculées ($\binom{n-1}{k-1}$ et $\binom{n-1}{k}$), et cela économise ainsi le calcul d'un grand nombre de factorielles.
Question : Implanter une fonction triangle_pascal(N)
qui retourne le triangle de Pascal d'ordre N
, sous la forme d'une liste L
comportant N+1
sous-listes, telle que la $j$-ème liste contient l'ensemble des binomiaux de la forme $\binom{j}{i}$ pour $0 \le i \le j$.
Par exemple, pour N = 6
, la fonction doit retourner :
[[1],
[1, 1],
[1, 2, 1],
[1, 3, 3, 1],
[1, 4, 6, 4, 1],
[1, 5, 10, 10, 5, 1],
[1, 6, 15, 20, 15, 6, 1]]
Le but de cet exercice est de programmer une fonction qui dessine le flocon de Koch, comme sur l'image ci-dessous.
Le flocon de Koch est une fractale, c'est-à-dire une forme similaire à elle-même à n'importe quelle échelle. On peut le construire de manière itérative, illustrée par la série d'images suivantes :
Les images précédentes représentent un flocon de Koch d'ordre $0$, $1$, $2$ et $3$.
Pour obtenir le flocon d'ordre $n$ à partir du flocon d'ordre $n-1$, l'idée est d'opérer une "floraison" sur chacun des segments de droites du flocon d'ordre $n-1$. Plus précisément, on fait "fleurir" un segment de droite en partageant le segment en 3. Les parties extérieures sont préservées, et on supprime la partie centrale que l'on remplace par deux côtés d'un triangle équilatéral.
Si le segment de base a pour extrémités $A$ et $B$, alors, les points de la forme entre $A$ et $B$ après floraison sont les $5$ points suivants :
où ${\rm rot}(\overrightarrow{AB})$ est la rotation de $+ 90°$ du vecteur $\overrightarrow{AB}$.
Question 1 : Dans cet exercice on représente les points du plan en coordonnées cartésiennes. Écrire une fonction vecteur(A, B)
qui prend en entrée deux points du plan A
et B
et qui calcule les coordonnées du vecteur $\overrightarrow{AB}$.
Question 2 : Écrire une fonction rotation(u)
qui prend en entrée un vecteur u
et qui calcule la rotation de $+90$ degrés de u
.
Question 3 : Écrire une fonction translation(A, u, x)
qui prend en entrée un point A
, un vecteur directeur u
et un nombre flottant x
et qui retourne $A + x u$.
Question 4 : Écrire une fonction etape_floraison(A, B)
qui prend en entrée deux points du plan A
et B
, et qui calcule la liste de $5$ points correspondant à une étape de floraison du flocon de Koch entre les points A
et B
.
Question 5 : Écrire une fonction flocon(n)
qui calcule le flocon de Koch à l'ordre $n$. Le flocon sera représenté par sa liste de points.
Question 6 : Afficher le flocon de Koch d'ordre $8$, dans un graphe sans axe, de hauteur $0.4$ et de largeur $1$.