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

\n", " La figure initiale est un triangle équilatéral $P_0$ de côté $1$.

\n", " À 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.

\n", "
\n", " Activer la figure dynamique ci-dessous, qui permet de visualiser les polygones $P_n$ pour les premières valeurs de $n$.
\n", " (Pour faire apparaître et activer la figure dynamique, sélectionner la cellule et valider avec SHIFT+Entrée)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\t\n", "\t\t\n", "\t\t\n", "\t\t\n", "\t\t\n", "\t\n", "\t\n", "\t\t
\n", "\t\t\t\t\t\t\n", "\t\t\t
\n", "\t\t\t\t
\n", "\t\t\t\t\t\t\t\t\n", "\t\t\t\t\t\t\t\t\n", "\t\t\t\t
\n", "\t\t\t
\n", "\t\t
\n", "\t\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#Sélectionner cette zone puis SHIFT+ENTREE\n", "from IPython.display import display, HTML ; display(HTML('fig_dyn_GeoGebra/Flocon_Von_Koch.html'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
\n", " \n", "
\n", " Notations :

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

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

\n", "\n", "a. $a_0=1$ ; $\\displaystyle a_1=\\frac{a_0}{3}=\\frac{1}{3}$ ; $\\displaystyle a_2=\\frac{a_1}{3}=\\frac{1}{9}$.
\n", "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}$.
\n", "c. La longueur des côtés de $P_5$ est $\\displaystyle a_5=\\frac{1}{3^5}=\\frac{1}{243}$.
\n", "d. $a_0=1>0$ et $0 \n", "
" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "from sympy import Rational \n", "# Cet import permet d'utiliser la fonction Rational pour effectuer des calculs de fractions sous forme exacte\n", "\n", "def a(n):\n", " \"Fonction qui calcule la longueur des côtés du polygone P_n\"\n", " return Rational(1,3**n)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{1}{243}$" ], "text/plain": [ "1/243" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Effectuer ici la saisie pour vérifier le résultat de la question 2.2.c.\n", "a(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "2.3. $\\;$a. Exprimer $p_n$ en fonction de $c_n$ et $a_n$.
\n", "$\\quad\\;\\;$ b. Déterminer la valeur exacte du périmètre de $P_5$.
\n", "$\\quad\\;\\;$ c. Écrire une fonction Python p d'argument n permettant le calcul de la valeur exacte de $p_n$
\n", "$\\quad\\quad\\;$ (on effectuera des appels aux fonctions précédentes avec les syntaxes c(n) et a(n)). \n", "$\\quad\\quad\\;$ Effectuer la saisie nécessaire pour vérifier le résultat de la question 2.3.b.\n", "
\n", "

\n", "\n", "a. $p_n=c_n\\times a_n$.
\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}$.
\n", "
" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Écrire ici la fonction p permettant le calcul de p(n) sous forme exacte\n", "\n", "def p(n):\n", " \"Fonction qui calcule le périmètre du polygone P_n\"\n", " return a(n)*c(n)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{1024}{81}$" ], "text/plain": [ "1024/81" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Effectuer ici la saisie pour vérifier le résultat de la question 2.3.b.\n", "p(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "$\\quad$ d. Exprimer $p_n$ en fonction de $n$. Justifier que la suite $(p_n)_{n\\geq0}$ est géométrique.
\n", "$\\quad$ e. Déterminer $\\displaystyle\\lim\\limits_{n \\to +\\infty}{p_n}$. Donner une interprétation géométrique de ce résultat.\n", "
\n", "

\n", "\n", "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$.
\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}$.
\n", "b. $p_0=3>0$ et $q=\\frac{4}{3}>1$ donc $\\displaystyle\\lim\\limits_{n \\to +\\infty}{a_n}=+\\infty$.
\n", "$\\;\\;\\;$Le périmètre de $P_n$ peut être aussi grand qu'on le souhaite, pour $n$ \"assez grand\".
\n", "$\\;\\;\\;$Ainsi le flocon de Von Koch a un contour de longueur infinie.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 3. Étude de l'aire du flocon de Von Koch" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "3.1. $\\;$Démontrer qu'un triangle équilatéral de côté $a>0$ a pour aire $\\displaystyle \\frac{\\sqrt{3}}{4}a^2$.
\n", "3.2. $\\;$Donner la valeur de $A_0$.
\n", "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$.
\n", "$\\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$.
\n", "$\\quad\\quad\\;$ Effectuer la saisie nécessaire pour effectuer le calcul de $A_1$ de la question 3.3.a.
\n", "$\\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$)\n", "
\n", "

\n", "\n", "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).
\n", "$\\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}.$
\n", "3.2. $\\displaystyle A_0=\\frac{a_0^2\\sqrt{3}}{4}=\\frac{\\sqrt{3}}{4}$.
\n", "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}$.
\n", "$\\quad\\;\\;\\;$ L'aire ajoutée vaut donc $\\displaystyle 3\\times \\frac{ \\left( \\frac{1}{3} \\right) ^2\\sqrt{3}}{4}=\\frac{\\sqrt{3}}{12}.$
\n", "$\\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}$.
\n", "
" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from sympy import sqrt\n", "# Cet import permet d'utiliser la fonction sqrt pour effectuer des calculs avec racines carrées sous forme exacte\n", "\n", "def AireEqui(a):\n", " \"Fonction qui calcule l'aire d'un triangle équilatéral de côté a (sous forme exacte)\"\n", " return sqrt(3)*Rational(a**2,4)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{\\sqrt{3}}{3}$" ], "text/plain": [ "sqrt(3)/3" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Effectuer ici la saisie pour retrouver le résultat de la question 3.3.a.\n", "AireEqui(a(0))+3*AireEqui(a(1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", " \n", "
\n", "3.4. On effectue maintenant un raisonnement similaire à celui de la question 3.2. dans le cas général.
\n", "$\\quad\\;\\;$ a. On considère un entier $n>0$.
\n", "$\\quad\\quad\\;\\;$ En raisonnant sur les aires ajoutées lorsqu'on passe de la figure $P_{n-1}$ à $P_n$, justifier que :
\n", "$\\quad\\quad\\;\\;$ $\\displaystyle A_n = A_{n-1}+c_{n-1}\\times \\frac{\\sqrt{3}}{4}{a_n}^2$
\n", "$\\quad\\;\\;$ b. On fournit ci-dessous la fonction Python A d'argument n permettant le calcul de $A_n$..
\n", "$\\quad\\quad\\;\\;$ Exécuter les saisies proposées pour obtenir la valeur exacte de $A_1$ et sa valeur décimale approchée.
\n", "$\\quad\\quad\\;\\;$ Vérifier la cohérence avec les résultats des questions 3.3.a. et 3.3.b.\n", "
\n", "

\n", "\n", "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.
\n", "
" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def A(n):\n", " \"fonction qui calcule l'aire du polygone P_n (sous forme exacte)\"\n", " if n==0: return AireEqui(1)\n", " return A(n-1)+c(n-1)*sqrt(3)*Rational(a(n)**2,4)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{\\sqrt{3}}{3}$" ], "text/plain": [ "sqrt(3)/3" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A(1)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 0.577350269189626$" ], "text/plain": [ "0.577350269189626" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A(1).evalf()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "$\\quad\\;\\;$ d. Effectuer des saisies pour évaluer $A_5$, $A_{10}$ et $A_{100}$.
\n", "$\\quad\\quad\\;\\;$ Que peut-on conjecturer pour la suite $(A_n)_{n\\geq0}$ ?
\n", "$\\quad\\quad\\;\\;$ Interpréter géométriquement ce résultat.
\n", "
\n", "

\n", "\n", "Il semble que la suite $(A_n)_{n\\geq0}$ soit majorée et admette une limite finie.
\n", "Ainsi, le flocon de Von Koch a une aire finie, bien que délimité par un contour de longueur infini.\n", "
" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{7822 \\sqrt{3}}{19683}$" ], "text/plain": [ "7822*sqrt(3)/19683" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Utiliser ces zones pour les saisies demandées\n", "A(5)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 0.688314861393271$" ], "text/plain": [ "0.688314861393271" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A(5).evalf()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{464852158 \\sqrt{3}}{1162261467}$" ], "text/plain": [ "464852158*sqrt(3)/1162261467" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A(10)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 0.692742191429835$" ], "text/plain": [ "0.692742191429835" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A(10).evalf()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{35415198516783302578504176271437283496884224807503085686178556948154201994063474710111651440798 \\sqrt{3}}{88537996291958256446260440678593208943077817551131498658191653913030830300434060998128233014667}$" ], "text/plain": [ "35415198516783302578504176271437283496884224807503085686178556948154201994063474710111651440798*sqrt(3)/88537996291958256446260440678593208943077817551131498658191653913030830300434060998128233014667" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A(100)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 0.692820323027551$" ], "text/plain": [ "0.692820323027551" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A(100).evalf()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Von_Koch](img/Von_Koch.png)\n", "\n", "
Niels Fabian Helge von Koch (1870-1924)
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*(C) Copyright Franck CHEVRIER 2019-2021 http://www.python-lycee.com/*\n" ] } ], "metadata": { "celltoolbar": "Raw Cell Format", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" } }, "nbformat": 4, "nbformat_minor": 2 }