{"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":"# Algorithme de Briggs pour le calcul du logarithme (corrigé)"},{"metadata":{},"cell_type":"markdown","source":"*Le but de l'activité est d'obtenir des valeurs approchées de logarithmes népérien à l'aide des opérations élémentaires et de la racine carrée.*\n\n### Sommaire\n\n1. Principe de l'algorithme de Briggs
\n2. Implémentation en langage Python
\n\n"},{"metadata":{},"cell_type":"markdown","source":"## 1. Principe de l'algorithme de Briggs"},{"metadata":{},"cell_type":"markdown","source":"\n__On considère un réel $a>0$, et on souhaite évaluer $ln(a)$.__\n\n

\n__1.1. On pose $u_0=a$ et pour tout $n\\in\\mathbb{N}$, $u_{n+1}=\\sqrt{u_n}$.__
\n__$\\quad\\;$a. Démontrer par récurrence que pour tout $n\\in\\mathbb{N}$, $u_n=e^{\\;ln(a)/2^n}$.__
\n__$\\quad\\;$b. En déduire que $(u_n)_{n \\geq 0}$ converge et que $\\lim\\limits_{n \\to +\\infty}{u_n}=1$__

\n\n\na. Notons $P(n)$ la propriété \" $u_n=e^{\\;ln(a)/2^n}$ \".
\n
\n\n\nb. Comme $\\displaystyle \\lim\\limits_{n \\to +\\infty}{\\frac{ln(a)}{2^n}}=0$ et $\\lim\\limits_{X \\to 0}{e^X}=1$, on en déduit (par composition des limites) que $\\lim\\limits_{n \\to +\\infty}{u_n}=1$.\n\n\n\n__1.2.a. En calculant de deux façons le nombre dérivé de la fonction $ln$ en $1$, démontrer que $\\displaystyle \\lim\\limits_{x \\to 1}\\frac{ln(x)}{x-1}=1$__
\n$\\quad\\;$__b. En déduire que $\\displaystyle \\lim\\limits_{n \\to +\\infty}\\frac{ln(u_n)}{u_n-1}=1$.__
\n$\\quad\\;$__c. Justifier que $2^n ln(u_n)=ln(a)$, et en déduire que pour $n$ suffisamment grand, on a $ln(a) \\approx 2^n(u_n-1)$.__

\n\n\n\na. La fonction dérivée de $ln$ est la fonction inverse, donc $\\displaystyle ln'(1)=\\frac{1}{1}=1$
\n$\\quad$D'autre part, en écrivant ce nombre dérivé comme limite d'un taux d'accroissement, on a:
\n$\\quad \\displaystyle \\lim\\limits_{x \\to 1}\\frac{ln(x)-ln(1)}{x-1}=1$
\n$\\quad \\displaystyle \\lim\\limits_{x \\to 1}\\frac{ln(x)}{x-1}=1$

\nb. Comme $\\lim\\limits_{n \\to +\\infty}{u_n}=1$ et $\\displaystyle \\lim\\limits_{x \\to 1}\\frac{ln(x)-ln(1)}{x-1}=1$, on en déduit par composition de limites que $\\displaystyle \\lim\\limits_{n \\to +\\infty}\\frac{ln(u_n)}{u_n-1}=1$.

\nc. $\\displaystyle 2^n ln(u_n)=2^n ln (e^{\\;ln(a)/2^n})=2^n \\times \\frac{ln(a)}{2^n}=ln(a)$
\n$\\quad$On a donc $\\displaystyle \\frac{ln(u_n)}{u_n-1}=\\frac{ln(a)}{2^n (u_n-1)}$.
\n$\\quad$Comme $\\displaystyle \\lim\\limits_{n \\to +\\infty}\\frac{ln(u_n)}{u_n-1}=1$, on en déduit que $\\lim\\limits_{n \\to +\\infty}2^n(u_n-1)=ln(a)$
\n$\\quad$Finalement, pour $n$ suffisamment grand, on a $ln(a) \\approx 2^n(u_n-1)$.\n
\n\n\n__1.3. Dans cette question, on pose $a=2$.__
\n$\\quad\\;$__Recopier et compléter le tableau suivant jusqu'à obtenir une valeur $u_n$ telle que $\\lvert u_n-1 \\rvert<10^{-2}$ (c'est à dire $u_n$ \"proche\" de $1$).__
\n$\\quad\\;$On pourra effectuer les calculs à la calculatrice ou à l'aide de la zone de saisie Python fournie plus bas.
\n$\\quad\\;$__Quelle valeur approchée de $ln(2)$ peut-on en déduire ?__\n"},{"metadata":{},"cell_type":"markdown","source":"\n| $n$ | | $u_n$ | | $\\lvert u_n-1\\rvert<10^{-2}$ |\n| :------:|:--:|:------------------------:|:--:|:-------------------------------------:|\n| 0 | | 2 | | Faux |\n| 1 | | 1,414213562 | | Faux |\n| 2 | | 1,189207115 | | Faux |\n| 3 | | 1,090507733 | | Faux |\n| 4 | | 1,044273782 | | Faux |\n| 5 | | 1,021897149 | | Faux | \n| 6 | | 1,010889286 | | Faux | \n| 7 | | 1,005429901 | | Vrai | \n|........ |... |......................... |... |...................................... |\n\n\nOn en déduit que $ln(2) \\approx 2^7(u_7-1) \\approx 0,6950273424$\n"},{"metadata":{"trusted":false},"cell_type":"code","source":"#Cette zone de saisie Python peut être utilisée pour le calcul des valeurs successives de la suite u\nfrom math import sqrt #Cette syntaxe permet d'utiliser la fonction sqrt pour le calcul d'une racine carrée\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 2. Implémentation en langage Python"},{"metadata":{},"cell_type":"markdown","source":"\n\n__On considère un réel $a>0$ et un entier $m \\in\\mathbb{N}$, et on souhaite obtenir une valeur approchée de $ln(a)$ pour le rang $n$ tel que $\\lvert u_n-1 \\rvert<10^{-m}$.__
\n\n__2.1. Écrire une fonction Python Briggs qui reçoit en argument la valeur $a$ et l'entier $m$, et qui renvoie la valeur approchée de $ln(a)$ obtenue avec l'algorithme de Briggs.__
\nLa syntaxe from math import sqrt permet d'utiliser la fonction sqrt qui permet de calculer une racine carrée.
\nOn peut utiliser la fonction abs pour le calcul d'une valeur absolue.

"},{"metadata":{"trusted":false},"cell_type":"code","source":"#Écrire ici la fonction Python Briggs\nfrom math import sqrt\n\ndef Briggs(a,m):\n n=0\n u=a\n while abs(u-1)>=10**-m:\n n=n+1\n u=sqrt(u)\n return 2**n*(u-1)\n ","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__2.2. Utiliser la fonction Briggs avec $m=9$ pour obtenir une valeur approchée de $ln(2)$.__"},{"metadata":{"trusted":false},"cell_type":"code","source":"#Effectuer ici l'appel à la fonction Python Briggs\nBriggs(2,9)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"__2.3. La syntaxe from math import log permet d'utiliser la fonction Python log qui correspond à la fonction mathématique $ln$.__
\n$\\quad\\;$__Effectuer une saisie pour obtenir la valeur de $ln(2)$. Vérifier la cohérence avec le résultat de la question précédente.__"},{"metadata":{"scrolled":true,"trusted":false},"cell_type":"code","source":"#Effectuer ici la saisie pour calculer ln(2)\nfrom math import log\nlog(2)","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"![Table_logarithme](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/Table_log.png)\n\n
La fonction étudiée dans ce TP est le logarithme népérien, mais c'est à l'aide de ce même algorithme que Henry Briggs a pu dresser des tables de la fonction logarithme décimal avec une précision de 14 décimales.
\n"},{"metadata":{},"cell_type":"markdown","source":"![Briggs](https://raw.githubusercontent.com/PythonLycee/PyLyc/master/img/Henry_Briggs.jpg)\n\n
Henry Briggs (1560-1630)
"},{"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}