{"cells":[{"metadata":{},"cell_type":"markdown","source":"![En tête general](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/En_tete_general.png)\n\n\n© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
\nLes activités partagées sur Capytale sont sous licence Creative Commons.\n\n Pour exécuter une saisie Python, sélectionner la cellule et valider avec SHIFT+Entrée.\n"},{"metadata":{},"cell_type":"markdown","source":"

Méthode de Héron (Corrigé)

\n

Approximation et encadrement d'une racine carrée

"},{"metadata":{},"cell_type":"markdown","source":"### Sommaire\n\n1. Présentation géométrique de la méthode
\n2. Étude mathématique et algorithmique
\n3. Encadrement d'une racine carrée
\n4. Contexte historique
"},{"metadata":{},"cell_type":"markdown","source":"## 1. Présentation géométrique de la méthode"},{"metadata":{},"cell_type":"markdown","source":"
\n \n
\n\n\n
\nLe but de cette activité est d'obtenir des valeurs approchées d'une expression $\\sqrt{p}$ à l'aide d'opérations élémentaires.
\nDans cette activité, on considérera que $p$ est un entier naturel non nul.

\nPar définition, $\\sqrt{p}$ est la longueur du côté d'un carré dont l'aire vaut $p$.

\nL'idée est d'approcher géométriquement ce carré à l'aide de rectangles dont les aires valent $p$ et tels que l'on puisse exprimer les longueurs de leurs côtés.

\n\n
\n
\n \n
\n\n1.1. Exprimer $a_1$ en fonction de $a_0$ et $b_0$, et exprimer $b_1$ en fonction de $p$ et $a_1$.\n\n
\n\n
\n1.1. $\\displaystyle a_1=\\frac{a_0+b_0}{2} \\;$ ; $a_1\\times b_1=p$ donc $\\displaystyle b_1=\\frac{p}{a_1}$.\n"},{"metadata":{},"cell_type":"markdown","source":" \n
\nEnsuite :\n
  • On reprend la méthode pour construire les rectangles suivants, en utilisant à chaque étape les dimensions du rectangle précédent.
  • \n
    \n\n1.2. Activer la figure dynamique ci-dessous, qui permet d'observer la construction géométrique des premiers rectangles.

    \n
    \n$\\quad$On observera en particulier que les rectangles semblent \"se rapprocher\" d'un carré d'aire $p$.
    \n$\\quad$Il semble donc que les termes $a_n$ pourraient fournir des approximations de la longueur du côté d'un carré d'aire $p$, c'est à dire de $\\sqrt{p}$.\n"},{"metadata":{"scrolled":false,"trusted":false},"cell_type":"code","source":"#Sélectionner cette zone puis SHIFT+ENTREE\nfrom IPython.display import HTML ; HTML(\"\"\"\"\"\")","execution_count":1,"outputs":[{"output_type":"execute_result","execution_count":1,"data":{"text/plain":"","text/html":""},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"
    \n \n
    \n\n## 2. Étude mathématique et algorithmique\n\n2.1. Justifier que $\\forall n\\in \\mathbb{N}\\;;\\;\\displaystyle a_{n+1}=\\frac{a_n+b_n}{2}\\;$ et $\\;\\forall n\\in \\mathbb{N}\\;;\\;\\;\\displaystyle b_{n}=\\frac{p}{a_{n}}$.\n

    \n2.2. En déduire que la suite $(a_n)_{n \\geq 0}$ vérifie :\n$ \\begin{Bmatrix}\n a_0=p \\\\\n \\forall n\\in \\mathbb{N} \\;;\\; a_{n+1} = \\displaystyle \\frac{1}{2} \\left( a_n+\\frac{p}{a_n} \\right) \\end{Bmatrix}$\n
    \n\n
    \n2.1. $a_{n+1}$ étant par construction la moyenne de $a_n$ et $b_n$, on a $\\displaystyle a_{n+1}=\\frac{a_n+b_n}{2} \\;$.
    \n$\\quad\\;\\;$Pour tout $n\\in\\mathbb{N}$, l'aire du rectangle de rang $n$ a pour aire $a_n\\times b_n = p$ donc $\\displaystyle b_{n}=\\frac{p}{a_{n}}$.\n

    \n2.2. $a_0=p$ d'après l'énoncé (construction du rectangle de rang $0$).
    $\\displaystyle \\quad\\;\\; a_{n+1}=\\frac{a_n+b_n}{2}=\\frac{a_n+\\frac{p}{a_{n}}}{2}=\\frac{1}{2}\\left( a_n+\\frac{p}{a_n} \\right) \\;$\n
    \n"},{"metadata":{},"cell_type":"markdown","source":"\n2.3. Dans cette question, on suppose que $p=13$, de telle sorte que l'on a :

    \n$\\quad\\quad \\begin{Bmatrix}\n a_0=13 \\\\\n \\forall n\\in \\mathbb{N} \\;;\\; a_{n+1} = \\displaystyle \\frac{1}{2} \\left( a_n+\\frac{13}{a_n} \\right) \\end{Bmatrix}$ \n

    \n$\\quad\\;$On souhaite implémenter en Python la suite $(a_n)_{n\\geq0}$.\n

    \n$\\quad\\;\\;$a. Écrire une fonction Python Heron qui reçoit n en argument et qui renvoie la valeur de $a_n$.\n
    "},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la fonction Heron\n\ndef Heron(n):\n a = 13\n for k in range(n):\n a = 1/2*(a+13/a)\n return a\n","execution_count":2,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"\n$\\quad\\;\\;$b. Effectuer un appel à la fonction Python Heron pour calculer $a_3$ dans le cas où $p=13$.
    \n$\\quad\\quad\\;\\;$Vérifier la cohérence du résultat avec la figure dynamique fournie précédemment dans la question 1.2.
    \n
    "},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici l'appel à la fonction Heron\n\nHeron(3)","execution_count":3,"outputs":[{"output_type":"execute_result","execution_count":3,"data":{"text/plain":"3.6820276497695854"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"\n2.4.a. Démontrer que $ \\displaystyle \\;\\forall n\\in \\mathbb{N}\\;; a_{n+1}^2-p = \\frac{ \\left( a_n^2-p \\right)^2 }{4 a_n^2}$ et en déduire que $\\;\\forall n\\in \\mathbb{N} \\;;\\; a_n \\geq \\sqrt{p}$.\n

    \n$\\quad\\;$b. Justifier que $\\displaystyle \\;\\forall n\\in \\mathbb{N} \\;;\\; a_{n+1}-a_n = \\frac{p-a_n^2}{2a_n}$ et en déduire que la suite $(a_n)_{n \\geq 0}$ est décroissante.
    \n$\\quad\\;$c. En déduire que la suite $(a_n)_{n \\geq 0}$ admet une limite finie, que l'on notera $L$.
    \n\n

    \n\n2.4.a. $ \\displaystyle \\;\\forall n\\in \\mathbb{N}\\;; a_{n+1}^2-p = \\left( \\frac{1}{2}\\left( a_n+\\frac{p}{a_n} \\right) \\right) ^2 -p = \\frac{1}{4} \\left( \\frac{a_n^2+p}{a_n} \\right)^2 -p = \\frac{ \\left( a_n^2+p \\right)^2 }{4a_n^2} -p = \\frac{ \\left( a_n^2+p \\right)^2 -4pa_n^2}{4a_n^2} = \\frac{ \\left( a_n^2 \\right)^2 +2pa_n^2+p²-4pa_n^2}{4a_n^2} = \\frac{ \\left( a_n^2 \\right)^2 -2pa_n^2+p²}{4a_n^2} = \\frac{ \\left( a_n^2-p \\right)^2 }{4 a_n^2}$
    \nLe membre de droite est un carré donc est positif, et on en déduit que $\\forall n\\in \\mathbb{N}\\;; a_{n+1}^2-p \\geq 0$, ce qui donne $a_{n+1}\\geq\\sqrt{p}$.
    \nDe plus, on a aussi $a_0=p=\\sqrt{p}^2\\geq\\sqrt{p}$ car $p\\in \\mathbb{N}^*$.\n

    \nb. \n$\\displaystyle \\;\\forall n\\in \\mathbb{N} \\;;\\; a_{n+1}-a_n = \\displaystyle \\frac{1}{2} \\left( a_n+\\frac{p}{a_n} \\right)-a_n = \\frac{1}{2} \\left( a_n+\\frac{p}{a_n}-2a_n \\right) = \\frac{1}{2} \\left( \\frac{p}{a_n}-a_n \\right) = \\frac{1}{2} \\left( \\frac{p-a_n^2}{a_n} \\right)=\\frac{p-a_n^2}{2a_n}$\n
    \n$\\;\\forall n\\in \\mathbb{N} \\;;\\; a_n \\geq \\sqrt{p}$ donc $a_n^2 \\geq p$ donc $p-a_n^2 \\leq 0$, d'où on déduit $a_{n+1}-a_n \\leq 0$, c'est à dire $a_{n+1}\\leq a_n$.
    \n$(a_n)_{n \\geq 0}$ est bien décroissante.\n

    \nc. La suite $(a_n)_{n \\geq 0}$ étant décroissante et minorée par $\\sqrt{p}$, on en déduit qu'elle est convergente, et on note $L$ sa limite.\n
    \n\n"},{"metadata":{},"cell_type":"markdown","source":"\n2.5. Justifier que la limite $L$ de la suite $(a_n)_{n \\geq 0}$ vérifie $L = \\displaystyle \\frac{1}{2} \\left( L+\\frac{p}{L} \\right)$. En déduire la valeur de $L$.\n\n\n

    \n\n2.5.
    En passant à la limite quand $n$ tend vers $+\\infty$ dans $a_{n+1} = \\displaystyle \\frac{1}{2} \\left( a_n+\\frac{p}{a_n} \\right)$, on obtient $L = \\displaystyle \\frac{1}{2} \\left( L+\\frac{p}{L} \\right)$\n
    \nOn résout alors l'équation :
    \n$L = \\displaystyle \\frac{1}{2} \\left( L+\\frac{p}{L} \\right)$
    \n$\\displaystyle \\Leftrightarrow L - \\frac{1}{2} \\left( L+\\frac{p}{L} \\right) = 0$
    \n$\\displaystyle \\Leftrightarrow \\frac{1}{2} L - \\frac{p}{2L} = 0$
    \n$\\displaystyle \\Leftrightarrow \\frac{L^2-p}{2L} = 0$
    \n$\\displaystyle \\Leftrightarrow L^2-p = 0$
    \n$\\displaystyle \\Leftrightarrow (L-\\sqrt{p})(L+\\sqrt{p}) = 0$
    \n$\\displaystyle \\Leftrightarrow L \\in \\left\\{ -\\sqrt{p} ; \\sqrt{p} \\right\\}$
    \net comme $L \\geq 0$ (limite d'une suite à termes positifs), on en déduit que $L = \\sqrt{p}$.\n
    \n"},{"metadata":{},"cell_type":"markdown","source":"2.6.a. Modifier la fonction Python Heron écrite à la question 2.3.a de telle sorte que :
    \n \n \n "},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la nouvelle fonction Heron\n\ndef Heron(p,n):\n a = p\n for k in range(n):\n a = 1/2*(a+p/a)\n return a","execution_count":4,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"$\\quad$b. À l'aide d'un appel à la fonction Heron, proposer une valeur approchée de $\\sqrt{5}$."},{"metadata":{"trusted":false},"cell_type":"code","source":"# Effectuer ici l'appel à la fonction Heron\n\nHeron(5,4) # (on a calculé ici le terme de rang 4 de la suite)","execution_count":5,"outputs":[{"output_type":"execute_result","execution_count":5,"data":{"text/plain":"2.2360688956433634"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"## 3. Encadrement d'une racine carrée"},{"metadata":{},"cell_type":"markdown","source":"On reprend la suite $(a_n)_{n\\geq 0}$ définie dans la partie 2, vérifiant : $ \\begin{Bmatrix}\n a_0=p \\\\\n \\forall n\\in \\mathbb{N} \\;;\\; a_{n+1} = \\displaystyle \\frac{1}{2} \\left( a_n+\\frac{p}{a_n} \\right) \\end{Bmatrix}$ ,
    \nainsi que la suite $(b_n)_{n\\geq 0}$ vérifiant : $\\displaystyle \\forall n\\in \\mathbb{N} \\;;\\; b_n=\\frac{p}{a_n}$."},{"metadata":{},"cell_type":"markdown","source":"
    \n Info :

    \n Les deux suites $(a_n)_{n\\geq0}$ et $(b_n)_{n\\geq0}$ étudiées ici sont dites adjacentes.
    \n
      \n
    • $(a_n)_{n\\geq0}$ et $(b_n)_{n\\geq0}$ sont respectivement décroissante et croissante ;
    • \n
    • $(a_n)_{n\\geq0}$ et $(b_n)_{n\\geq0}$ ont la même limite $\\sqrt{p}$.
    • \n
    \n Il en résulte que $b_n\\leq \\sqrt{p} \\leq a_n$ fournit un encadrement de $\\sqrt{p}$ d'amplitude $a_n-b_n$.
    \n \n
    \n\n\n3.1.a. On rappelle que la suite $(a_n)_{n \\geq 0}$ est décroissante.
    \n$\\quad\\quad$Justifier que $(b_n)_{n \\geq 0}$ est croissante.

    \n$\\quad\\;$b. On rappelle que la suite $(a_n)_{n \\geq 0}$ a pour limite $\\sqrt{p}$.
    \n$\\quad\\quad$En déduire la limite de la suite $(b_n)_{n \\geq 0}$.\n
    "},{"metadata":{},"cell_type":"markdown","source":"\n3.1.a.
    \n$\\displaystyle \\forall n\\in \\mathbb{N} \\;;\\; b_{n+1}-b_n = \\frac{p}{a_n+1} - \\frac{p}{a_n} = \\frac{p(a_n-a_{n+1})}{a_n a_{n+1}}$ et comme $a_{n+1} \\leq a_n$, on en déduit que $a_n-a_{n+1}\\geq0$ et donc $b_{n+1}-b_n\\geq0$.
    \nLa suite $(b_n)_{n\\geq 0}$ est bien croissante. \n

    \n3.1.b.
    \n$\\displaystyle\\lim\\limits_{n \\to +\\infty}{a_n}=\\sqrt{p}\\;$ donc $\\;\\displaystyle\\lim\\limits_{n \\to +\\infty}{\\frac{p}{a_n}}=\\frac{p}{\\sqrt{p}}=\\sqrt{p}\\;$ c'est à dire $\\;\\displaystyle\\lim\\limits_{n \\to +\\infty}{b_n}=\\sqrt{p}$.\n
    "},{"metadata":{},"cell_type":"markdown","source":"3.2.a. Reprendre et modifier la fonction Python Heron de la question 2.6.a pour qu'elle renvoie les deux valeurs $b_n$ et $a_n$."},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la nouvelle fonction Heron\n\ndef Heron(p,n):\n a = p\n for k in range(n):\n a = 1/2*(a+p/a)\n b = p/a\n return b,a","execution_count":6,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"$\\quad$b. Effectuer un appel à cette fonction Heron pour $p=7$ et $n=5$.
    \n$\\quad\\;\\;$Quel encadrement de $\\sqrt{7}$ peut-on en déduire ?
    \n\n

    \n\n3.2.b. La saisie Python permet de conclure que $ 2,6457513110178117 \\leq \\sqrt{7} \\leq 2,6457513111113694$.\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"# Exécuter ici l'appel à la fonction Heron\n\nHeron(7,5)","execution_count":7,"outputs":[{"output_type":"execute_result","execution_count":7,"data":{"text/plain":"(2.6457513110178117, 2.6457513111113693)"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"3.3.a. Écrire une fonction Python Encadrement_racine qui :\n
      \n
    • reçoit en arguments la valeur p et une valeur h strictement positive ;
    • \n
    • renvoie deux valeurs $b_N$ et $a_N$ telles que $a_N-b_N\n
    \n
    "},{"metadata":{"trusted":false},"cell_type":"code","source":"# Écrire ici la fonction Encadrement_racine\n\ndef Encadrement_racine(p,h):\n a = p\n b = 1\n while a-b>=h:\n a = 1/2*(a+p/a)\n b = p/a\n return b,a","execution_count":8,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"$\\quad$b. À l'aide d'un appel à la fonction Encadrement_racine, obtenir un encadrement de $\\sqrt{720}$ d'amplitude inférieure à $10^{-5}$."},{"metadata":{"trusted":false},"cell_type":"code","source":"# Exécuter ici l'appel à la fonction Encadrement_racine\n\nEncadrement_racine(720,10**-5)","execution_count":9,"outputs":[{"output_type":"execute_result","execution_count":9,"data":{"text/plain":"(26.832815455186363, 26.832816004808592)"},"metadata":{}}]},{"metadata":{},"cell_type":"markdown","source":"## 4. Contexte historique"},{"metadata":{},"cell_type":"markdown","source":"Dans le tome 1 de son ouvrage \"Metrica\", Héron d'Alexandrie est amené à évaluer la racine carrée de 720.
    Il écrit :
    \n\n
    \n(...)
    \nέπεί ούν αί ψκ ρητήν τήν πλευράν ούκ έχουσι, ληψόμεθα μετά διαφόρου ελάχιστου τήν πλευράν ούτως.

    \nέπεί ό συνεγγίζων τώ ψκ τετράγωνός έστιν ό ψκθ καί πλευράν έ'χει τον κζ, μέρισον τάς ψκ εις τον κζ* γίγνεται κς καί τρίτα δύο’ πρόσθες τάς κζ* γίγνεται νγ τρίτα δύο* τούτων τό ήμισυ* γίγνεται κς L·' γ'* έσται άρα του ψκ ή πλευρά έγγιστα τά κς Δ.' γ'* τά γάρ κς ΙΔ γ' έφ’ έαυτά* γίγνεται ψκ λς'* ώστε τό διάφορον μονάδος έστί μόριον λς'

    \nεάν δέ βουλώμεθα έν έλάσσονι μορίω του λς' τήν διαφοράν γίγνεσθαι, άντί του ψκθ τάξομεν τά νϋν εύρεθέντα ψκ καί λς' καί ταύτά ποιήσαντες εύρήσομεν πολλω έλάττονα του λς' τήν διαφοράν γιγνομένην.\n
    (...)\n
    \ndont voici la traduction :\n
    \n(...)
    \nAlors, puisque les 720 n’ont pas le côté exprimable, nous prendrons le côté avec une très petite différence ainsi.

    \nPuisque le carré le plus proche de 720 est 729 et qu’il a 27 comme côté, divise les 720 par le 27 : il en résulte 26 ⅔ ; ajoute les 27 : il en résulte 53 ⅔ ; de ceux-ci, la moitié : il en résulte 26 ½ ⅓ : le côté de 720 sera donc 26 ½ ⅓ à très peu près. En effet, les 26 ½ ⅓ par eux-mêmes : il en résulte 720 $1/36$ ; de sorte que la différence est une 36e part d’unité.

    \nEt si nous voulons que la différence se produise par une part plus petite que 1/36, au lieu de 729, nous placerons les 720 $1/36$ maintenant trouvés et, en faisant les mêmes choses, nous trouverons qu’il en résulte une différence inférieure, de beaucoup, à 1/36.\n
    \n(...)\n

    \n\nNB : \n
      \n
    • La notation 26 ⅔ signifie $26+\\frac{2}{3}$.
    • \n
    • La notation 26 ½ ⅓ signifie $26+\\frac{1}{2}+\\frac{1}{3}$.
    • \n
    \n
    \n
    \n\n"},{"metadata":{"trusted":true},"cell_type":"markdown","source":"Ayant remarqué que le carré le plus proche de $720$ est $729=27^2$, Héron utilise comme valeur initiale $27$.
    \nEn langage mathématique moderne, pour approcher $\\sqrt{720}$, Héron utilise donc la suite $(u_n)_{n\\geq0}$ définie par :

    \n$ \\begin{Bmatrix}\n u_0=27 \\\\\n \\forall n\\in \\mathbb{N} \\;;\\; u_{n+1} = \\displaystyle \\frac{1}{2} \\left( u_n+\\frac{720}{u_n} \\right) \\end{Bmatrix}$\n\n
    "},{"metadata":{},"cell_type":"markdown","source":"4.1. Vérifier par un calcul fractionnaire exact que la valeur trouvée par Héron pour $u_1$ est correcte. \n\n\n

    \n\n4.1.
    $u_1 = \\displaystyle \\frac{1}{2} \\left( u_0+\\frac{720}{u_0} \\right) = \\frac{1}{2} \\left(27+\\frac{720}{27} \\right) = \\frac{1}{2} \\left(27+\\frac{80}{3} \\right) = \\frac{1}{2} \\times \\frac{27\\times3+80}{3} = \\frac{161}{6}$.\n
    \nOr on a $\\displaystyle 26+\\frac{1}{2}+\\frac{1}{3}=\\frac{26\\times6+3+2}{6}=\\frac{161}{6}$, ce qui prouve bien que $\\displaystyle u_1=26+\\frac{1}{2}+\\frac{1}{3}$.\n
    "},{"metadata":{"trusted":true},"cell_type":"markdown","source":"\n4.2. Calculer $u_1^2$ et vérifier que l'erreur commise en remplaçant $720$ par $u_1^2$ est bien $\\displaystyle \\frac{1}{36}$. \n
    \n
    \n\n4.2.
    $\\displaystyle u_1^2=\\left( \\frac{161}{6} \\right)^2 = \\frac{161^2}{6^2}=\\frac{25921}{36}$
    \n$720\\times36=25920$ donc $\\displaystyle u_1^2=\\frac{25920}{36}+\\frac{1}{36}=720+\\frac{1}{36}$\n
    "},{"metadata":{},"cell_type":"markdown","source":"![Héron](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/Heron_Alexandrie.png) \n\n
    Héron d'Alexandrie (I er siècle après J.C)
    "},{"metadata":{},"cell_type":"markdown","source":"© Copyright Franck CHEVRIER 2019-2022 https://www.python-lycee.com.
    \nLes activités partagées sur Capytale sont sous licence Creative Commons.\n

    \nDernière modification de l'activité : Juillet 2022"}],"metadata":{"celltoolbar":"Raw Cell Format","kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":2}