#!/usr/bin/env python # coding: utf-8 # ![En tête general](img/En_tete_general.png) # # # *(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/* # # Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée. # # Le flocon de Von Koch (corrigé) # ### Sommaire # # 1. Construction géométrique et notations
# 2. Étude du périmètre du flocon de Von Koch
# 3. Étude de l'aire du flocon de Von Koch
# # ## 1. Construction géométrique et notations #
# Description de la construction :

# La figure initiale est un triangle équilatéral $P_0$ de côté $1$.

# À chaque étape, le polygone $P_n$ étant construit avec des côtés de longueur $a_n$, on obtient le polygone $P_{n+1}$ en remplaçant chaque côté par une ligne polygonale à quatre segments de longueur $a_{n+1}=\displaystyle \frac{a_n}{3}$ , vers l’extérieur.

#
# Activer la figure dynamique ci-dessous, qui permet de visualiser les polygones $P_n$ pour les premières valeurs de $n$.
# (Pour faire apparaître et activer la figure dynamique, sélectionner la cellule et valider avec SHIFT+Entrée). # In[1]: #Sélectionner cette zone puis SHIFT+ENTREE from IPython.display import display, HTML ; display(HTML('fig_dyn_GeoGebra/Flocon_Von_Koch.html')) #
#
# #
# Notations :

# Pour tout $n \in \mathbb{N}$, on note : # #
# ## 2. Étude du périmètre du flocon de Von Koch # 2.1. $\;$a. Donner les valeurs de $c_0$ ; $c_1$ et $c_2$.
# $\quad\;\;$ b. Quelle est la nature de la suite $(c_n)_{n\geq0}$ ? Exprimer $c_n$ en fonction de $n$.
# $\quad\;\;$ c. Combien le polygone $P_5$ a-t-il de côtés ?
# $\quad\;\;$ d. Déterminer $\displaystyle\lim\limits_{n \to +\infty}{c_n}$.
# $\quad\;\;$ e. Écrire une fonction Python c d'argument n permettant le calcul de $c(n)$.
# $\quad\quad\;$ Effectuer ensuite les saisies nécessaires pour vérifier le résultat de la question 2.1.c. #
#

# # a. $c_0=3$ ; $c_1=3\times4=12$ ; $c_2=12\times4=48$.
# b. $(c_n)_{n\geq0}$ est géométrique de premier terme $c_0=3$ et de raison $q=4$ donc $c_n=3\times4^n$.
# c. $P_5$ a $c_5=3\times4^5=3072$ côtés.
# d. $c_0=3>0$ et $q=4>1$ donc $\displaystyle\lim\limits_{n \to +\infty}{c_n}=+\infty$.
#
# In[2]: # Écrire ici la fonction c permettant le calcul de c(n) def c(n): "Fonction qui calcule le nombre de côtés du polygone P_n" return 3*4**n # In[3]: # Effectuer ici la saisie pour vérifier le résultat de la question 2.1.c. c(5) # 2.2. $\;$a. Donner les valeurs exactes de $a_0$ ; $a_1$ et $a_2$.
# $\quad\;\;$ b. Quelle est la nature de la suite $(a_n)_{n\geq0}$ ? Exprimer $a_n$ en fonction de $n$.
# $\quad\;\;$ c. Quelle est la longueur des côtés du polygone $P_5$ ?
# $\quad\;\;$ d. Déterminer $\displaystyle\lim\limits_{n \to +\infty}{a_n}$.
# $\quad\;\;$ e. La fonction Python a d'argument n donnée ci-dessous permet le calcul de la valeur exacte de $a(n)$.
# $\quad\quad\;$ Effectuer la saisie nécessaire pour vérifier le résultats de la questions 2.2.c. #
#

# # a. $a_0=1$ ; $\displaystyle a_1=\frac{a_0}{3}=\frac{1}{3}$ ; $\displaystyle a_2=\frac{a_1}{3}=\frac{1}{9}$.
# b. $(a_n)_{n\geq0}$ est géométrique de premier terme $a_0=1$ et de raison $q=\displaystyle \frac{1}{3}$ donc $\displaystyle a_n=\frac{1}{3^n}$.
# c. La longueur des côtés de $P_5$ est $\displaystyle a_5=\frac{1}{3^5}=\frac{1}{243}$.
# d. $a_0=1>0$ et $0 #
# In[4]: from sympy import Rational # Cet import permet d'utiliser la fonction Rational pour effectuer des calculs de fractions sous forme exacte def a(n): "Fonction qui calcule la longueur des côtés du polygone P_n" return Rational(1,3**n) # In[5]: # Effectuer ici la saisie pour vérifier le résultat de la question 2.2.c. a(5) # 2.3. $\;$a. Exprimer $p_n$ en fonction de $c_n$ et $a_n$.
# $\quad\;\;$ b. Déterminer la valeur exacte du périmètre de $P_5$.
# $\quad\;\;$ c. Écrire une fonction Python p d'argument n permettant le calcul de la valeur exacte de $p_n$
# $\quad\quad\;$ (on effectuera des appels aux fonctions précédentes avec les syntaxes c(n) et a(n)). # $\quad\quad\;$ Effectuer la saisie nécessaire pour vérifier le résultat de la question 2.3.b. #
#

# # a. $p_n=c_n\times a_n$.
# b. Le périmètre de $P_5$ est $\displaystyle p_5=c_5\times a_5=\frac{3\times4^5}{3^5}=\frac{4^5}{3^4}=\frac{1024}{81}$.
#
# In[6]: # Écrire ici la fonction p permettant le calcul de p(n) sous forme exacte def p(n): "Fonction qui calcule le périmètre du polygone P_n" return a(n)*c(n) # In[7]: # Effectuer ici la saisie pour vérifier le résultat de la question 2.3.b. p(5) # # $\quad$ d. Exprimer $p_n$ en fonction de $n$. Justifier que la suite $(p_n)_{n\geq0}$ est géométrique.
# $\quad$ e. Déterminer $\displaystyle\lim\limits_{n \to +\infty}{p_n}$. Donner une interprétation géométrique de ce résultat. #
#

# # a. $\displaystyle p_n=c_n\times a_n=3\times4^n\times\frac{1}{3^n}=3\times \left( \frac{4}{3} \right)^n$.
# $\;\;\;$On obtient l'expression d'une suite géométrique de premier terme $p_0=3$ et de raison $\displaystyle q=\frac{4}{3}$.
# b. $p_0=3>0$ et $q=\frac{4}{3}>1$ donc $\displaystyle\lim\limits_{n \to +\infty}{a_n}=+\infty$.
# $\;\;\;$Le périmètre de $P_n$ peut être aussi grand qu'on le souhaite, pour $n$ "assez grand".
# $\;\;\;$Ainsi le flocon de Von Koch a un contour de longueur infinie. #
# ## 3. Étude de l'aire du flocon de Von Koch # 3.1. $\;$Démontrer qu'un triangle équilatéral de côté $a>0$ a pour aire $\displaystyle \frac{\sqrt{3}}{4}a^2$.
# 3.2. $\;$Donner la valeur de $A_0$.
# 3.3. $\;$a. Combien de triangles sont ajoutés lorsqu'on passe de la figure $P_0$ à $P_1$ ? Que vaut l'aire ajoutée ? En déduire la valeur de $A_1$.
# $\quad\;\;$ b. On fournit ci-dessous la fonction Python AireEqui d'argument a qui permet le calcul de la valeur exacte d'un triangle de côté $a$.
# $\quad\quad\;$ Effectuer la saisie nécessaire pour effectuer le calcul de $A_1$ de la question 3.3.a.
# $\quad\quad\;$ (on utilisera respectivement les syntaxes a(0) et a(1) pour les longueurs des côtés de $P_0$ et $P_1$) #
#

# # 3.1. La hauteur d'un triangle équilatéral de côté $a$ vaut $\displaystyle \frac{a\sqrt{3}}{2}$ (peut s'établir à l'aide du théorème de Pythagore ou à l'aide de résultats de trigonométrie).
# $\quad\;$ Ainsi l'aire d'un tel triangle vaut $\displaystyle \frac{a\times \frac{a\sqrt{3}}{2}}{2}=\frac{a^2\sqrt{3}}{4}.$
# 3.2. $\displaystyle A_0=\frac{a_0^2\sqrt{3}}{4}=\frac{\sqrt{3}}{4}$.
# 3.3.a. Lorsqu'on passe de la figure $P_0$ à $P_1$ on ajoute $c_0=3$ triangles équilatéraux de côté $\displaystyle a_1=\frac{1}{3}$.
# $\quad\;\;\;$ L'aire ajoutée vaut donc $\displaystyle 3\times \frac{ \left( \frac{1}{3} \right) ^2\sqrt{3}}{4}=\frac{\sqrt{3}}{12}.$
# $\quad\;\;\;$ On en déduit $\displaystyle A_1=A_0+\frac{\sqrt{3}}{12}=\frac{\sqrt{3}}{4}+\frac{\sqrt{3}}{12}=\frac{\sqrt{3}}{3}$.
#
# In[8]: from sympy import sqrt # Cet import permet d'utiliser la fonction sqrt pour effectuer des calculs avec racines carrées sous forme exacte def AireEqui(a): "Fonction qui calcule l'aire d'un triangle équilatéral de côté a (sous forme exacte)" return sqrt(3)*Rational(a**2,4) # In[9]: # Effectuer ici la saisie pour retrouver le résultat de la question 3.3.a. AireEqui(a(0))+3*AireEqui(a(1)) #
# #
# 3.4. On effectue maintenant un raisonnement similaire à celui de la question 3.2. dans le cas général.
# $\quad\;\;$ a. On considère un entier $n>0$.
# $\quad\quad\;\;$ En raisonnant sur les aires ajoutées lorsqu'on passe de la figure $P_{n-1}$ à $P_n$, justifier que :
# $\quad\quad\;\;$ $\displaystyle A_n = A_{n-1}+c_{n-1}\times \frac{\sqrt{3}}{4}{a_n}^2$
# $\quad\;\;$ b. On fournit ci-dessous la fonction Python A d'argument n permettant le calcul de $A_n$..
# $\quad\quad\;\;$ Exécuter les saisies proposées pour obtenir la valeur exacte de $A_1$ et sa valeur décimale approchée.
# $\quad\quad\;\;$ Vérifier la cohérence avec les résultats des questions 3.3.a. et 3.3.b. #
#

# # 3.4.a. Lorsqu'on passe de la figure $P_{n-1}$ à $P_n$ on ajoute $c_{n-1}$ triangles équilatéraux de côté $\displaystyle a_n$, d'où le résultat.
#
# In[10]: def A(n): "fonction qui calcule l'aire du polygone P_n (sous forme exacte)" if n==0: return AireEqui(1) return A(n-1)+c(n-1)*sqrt(3)*Rational(a(n)**2,4) # In[11]: A(1) # In[12]: A(1).evalf() # # $\quad\;\;$ d. Effectuer des saisies pour évaluer $A_5$, $A_{10}$ et $A_{100}$.
# $\quad\quad\;\;$ Que peut-on conjecturer pour la suite $(A_n)_{n\geq0}$ ?
# $\quad\quad\;\;$ Interpréter géométriquement ce résultat.
#
#

# # Il semble que la suite $(A_n)_{n\geq0}$ soit majorée et admette une limite finie.
# Ainsi, le flocon de Von Koch a une aire finie, bien que délimité par un contour de longueur infini. #
# In[13]: # Utiliser ces zones pour les saisies demandées A(5) # In[14]: A(5).evalf() # In[15]: A(10) # In[16]: A(10).evalf() # In[17]: A(100) # In[18]: A(100).evalf() # ![Von_Koch](img/Von_Koch.png) # #
Niels Fabian Helge von Koch (1870-1924)
# *(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/* #