Histoires de logarithmes [Lycée]

Bonjour à tous.
Il y a plusieurs façons de définir les logarithmes.
* comme étant des primitives des fonctions $x\in]0;{+\infty}[\mapsto \frac ax$, ce qui requiert un théorème d'existence de primitives de fonctions continues.
* comme étant des bijections réciproques de fonctions exponentielles, ce qui requiert de construire ces fonctions exponentielles.
Ce qui suit propose une troisième possibilité, détaillée sous forme de problème.

Tout d'abord, j'appellerai logarithme tout procédé permettant de remplacer un calcul de produit par une addition.
Les tables de quarts de carrés fournissent un logarithme.
Il est aussi possible de bricoler un logarithme à l'aide d'une table trigonométrique.
Prérequis.
Principe de récurrence.
Théorème : Toute suite croissante et majorée de réels est convergente.
Continuité et dérivabilité des fonctions numériques d'une variable réelle.
Tabous : fonctions logarithmes et exponentielles.

Objet d'étude. Soit \( x \in \R_+^* \). On considère les suites \( (u_n)_n \) et \( (v_n)_n \) définies par  \[ u_0 = x, \quad \forall n\in \N, \quad u_{n+1} := \sqrt{u_n\vphantom{d}}, \quad v_n := 2^n(u_n - 1). \] On note \( \ell(x) \) la limite de \( (v_n)_n \) lorsqu'elle existe.

Bien entendu, en enfreignant un tabou, il n'est pas difficile de déterminer la limite \( \ell(x) \).
On commence en douceur par une question facile.
 
Q1 : Soit \( x \in \R_+^* \). Démontrer que \( \lim\limits_{n\to\infty} u_n = 1 \).

Réponses

  • Il te manque l’équation fonctionnelle, qui est historiquement la première définition.
    Algebraic symbols are used when you do not know what you are talking about.
            -- Schnoebelen, Philippe
  • Magnéthorax
    Modifié (January 2022)
    @Paco : je crois que c'est l'approche dite de Briggs.
  • @Magnétorax
    Je ne pense pas. Briggs calculait des logarithmes décimaux.
  • Je crois Nicolas que c’est ce qu’il veut dire « j'appellerai logarithme tout procédé permettant de remplacer un calcul de produit par une addition. ». 
  • @Paco : d'après le lien ci-dessous, l'algorithme dit de Briggs permet de calculer le logarithme népérien d'un réel strictement positif « Dites Monsieur, comment il calculait ses logarithmes John Neper ? » - IREM de la Réunion (univ-reunion.fr)
  • Paco_del_Rey
    Modifié (January 2022)
    @Magnétorax
    Briggs n'utilisait pas cet algorithme pour des raisons évidentes. J'y reviendrai si le fil réussit à avancer. Ce dont je commence à douter.

    Ton lien est une preuve supplémentaire, s'il en fallait, qu'il est dangereux de confier des recherches historiques à des enseignants de mathématiques ou de didactique. Cela dit, il est possible que l'appellation " algorithme dit de Briggs" soit consacrée à son corps défendant.
    Je ne suis pas historien, j'évite comme la peste les affirmations historiques. Pour autant il ne faut pas me raconter n'importe quoi.

    Sinon pourquoi "John Neper" et pas "John Napier" ? Encore un mystère.
    Bonne soirée,
    Paco.
  • Magnéthorax
    Modifié (January 2022)
    C'est pour ça que j'écris "dit de Briggs" dans mes deux messages. Pour John Napier/Jean Neper, il s'agit d'un "mashup" entre les deux deux langues, c'est-à-dire du Franglais. Ceci dit, logarithme népérien (avec ses accents aigus) est plutôt accepté de ce côté de La Manche.
  • Paco_del_Rey
    Modifié (January 2022)
    Rappel. On considère les suites \( (u_n)_n \) et \( (v_n)_n \) définies par \[ u_0 = x, \ \forall n\in \N, \ u_{n+1} := \sqrt{u_n}, \quad v_n := 2^n(u_n - 1). \]
     Q1. Soit \( x \in \R_+^* \). Démontrer que \( \lim\limits_{n\to\infty} u_n = 1 \).
     R1. Si \( x \geqslant 1 \) alors la suite \( (u_n)_n \) est décroissante. Comme elle est minorée par \( 1 \), elle converge vers une limite \( L \) qui vérifie \( L = \sqrt L \). Comme \( L \geqslant 1 \) on a \( L = 1 \). Si \( x \in\, ]0,1[ \) alors la suite \( (u_n)_n \) est croissante. Comme elle est majorée par \( 1 \), elle converge vers une limite \( L \) qui vérifie \( L = \sqrt L \). Comme \( L \geqslant x > 0 \) on a \( L = 1 \).
     Q2. Soit \( x \in \R_+^* \). Démontrer que la suite \( (v_n)_n \) est décroissante.
  • Soit $n$ un entier naturel et $a,b$ des réels strictement positifs. Rappelons l'inégalité de Bernoulli : pour tout entier $N\geq 1$, pour tout réel $q>0$, $q^N\geq 1+N(q-1)$. En prenant $N=2^n$ et $q=\frac{b^2}{a}$ : $$\frac{b^{2^{n+1}}}{a^{2^n}}\geq 1+2^n\left(\frac{b^2}{a}-1\right).$$
    Or : $\frac{b^2}{a}\geq 2b-a$ (équivaut à $(a-b)^2\geq 0$). D'où : $$\forall n\in\N \kern0.5em \forall a\in\R_+^* \kern0.5em \forall b\in\R_+^* \quad \frac{b^{2^{n+1}}}{a^{2^n}}-1\geq 2^{n+1}(b-1)-2^n(a-1).$$ Ceci étant, on montre sans difficulté que pour tout entier naturel $n$ et tout réel $x>0$, $u_n(x)>0$ et $(u_n(x))^{2^n}=x$ (récurrence immédiate) de sorte que : pour tout entier naturel $n$, pour tout réel $x>0$, pour tout réel $y>0$, $$\frac{y}{x}-1\geq v_{n+1}(y)-v_n(x).$$ Il s'ensuit que pour tout réel $x>0$, la suite $(v_n(x))$ est décroissante (prendre $y=x$) et minorée par $1-\frac{1}{x}$ (prendre $y=1$, sachant que par une récurrence immédiate, pour tout entier naturel $n$, $u_n(1)=1$), donc convergente. Notons $\ln$ la fonction qui à tout réel $x>0$ associe sa limite. Par passage à la limite dans l'inégalité précédente : pour tout réel $x>0$, pour tout réel $y>0$, $$\ln(y)-\ln(x)\leq \frac{y}{x}-1$$ d'où [...] $\ln$ dérivable sur $\R_+^*$ avec, pour tout réel $x>0$, $\ln'(x)=\frac1x$.
  • Paco_del_Rey
    Modifié (January 2022)
    Bonsoir Audeo.
    C'est très habile ! Il reste quelques trous à combler. Par exemple démontrer qu'on obtient bien un logarithme. Rien de difficile toutefois.

    Comme je n'ai pas ta virtuosité en calcul, je continue mon problème.
     R 2 : Soit \( n \in \N \). On a \begin{align*} v_{n+1} - v_n &= 2^{n+1}(\sqrt{u_n} - 1) - 2^n(u_n - 1)\\ &= 2^n \left( 2\sqrt{u_n} - 2 - u_n + 1 \right)\\ &= -2^n \left( u_n - 2\sqrt{u_n} + 1 \right)\\ &= -2^n \left( \sqrt{u_n} - 1 \right)^2 \leqslant 0, \end{align*} ce qui permet de conclure.
    Q 3 : Soit \( x \geqslant 1 \). Démontrer que \( \ell(x) \) existe et que \( \ell(x) \geqslant 0 \).
    Q 4 : Soit \( x \in ]0,1[ \). Démontrer que \( \ell(x) \) existe et que \( \ell(x) = - \ell\left(\frac1x\right) \).
  • R3 : Puisque \( x \geqslant 1 \), on a \( \forall n \in \N \), \( u_n \geqslant 1 \) et \( v_n \geqslant 0 \). La suite \( (v_n)_n \) est décroissante et minorée par zéro. Donc \( \ell(x) \) existe et \( \ell(x) \geqslant 0 \).
     R4 : Soit \( x \in ]0,1[ \). On définit \( u^\prime_0 = \dfrac1x \) et \( \forall n \in \N \), \( u^\prime_{n+1} = \sqrt{u^\prime_n} \). Une récurrence sans malice montre que \( \forall n \in \N \), \( u^\prime_{n+1} = \dfrac{1}{u_n} \). Comme \( \dfrac1x \geqslant 1 \), \( \ell\left(\frac1x\right) \) existe d'après la question Q3. De plus \[ \forall n\in \N, \, v_n = 2^n(u_n - 1) = -2^n\left(\dfrac{1}{u_n} - 1\right)\times u_n = -2^n(u^\prime_n - 1)\times u_n. \] Or on a \( \lim\limits_{n\to\infty} u_n = 1 \) d'après la question Q1 et \( \lim\limits_{n\to\infty} 2^n(u^\prime_n - 1) = \ell\left(\frac1x\right) \) ce qui permet de conclure.

     On pose pour tout \( t > 0 \), \( u_0(t) = t \) et \( \forall n\in \N, \, u_{n+1}(t) = \sqrt{u_n(t)} \).
     Q5 : Démontrer que \( \forall (x,y)\in (\R_+^*)^2, \; \ell(xy) = \ell(x) + \ell(y) \).
  • R5 : D'après les questions précédentes, on a \( \lim\limits_{n\to\infty} 2^n(u_n(t) - 1) = \ell(t) \). Une récurrence sans difficulté montre que \( \forall n \in \N \), \( \forall (x,y)\in (\R_+^*)^2, \; u_n(xy) = u_n(x) \times u_n(y) \). On a \[ 2^n(u_n(xy) - 1) = 2^n(u_n(xy) - u_n(x)) + 2^n(u_n(x) - 1) = 2^n(u_n(y) - 1)\times u_n(x) + 2^n(u_n(x) - 1). \] On a \( \lim\limits_{n\to\infty} 2^n(u_n(y) - 1) = \ell(y) \), \( \lim\limits_{n\to\infty} u_n(x) = 1 \) et \( \lim\limits_{n\to\infty} 2^n(u_n(x) - 1) = \ell(x) \). On en déduit que la suite \( \left( 2^n(u_n(xy) - 1) \right)_n \) converge d'une part vers \( \ell(xy) \) et d'autre part vers \( \ell(y)\times1 + \ell(x) \). Le théorème d'unicité de la limite entraine que \( \ell(xy) = \ell(x) + \ell(y) \).

    Q6 : Démontrer que \( \forall (x,y)\in ([1~,~{+\infty}[)^2, \; \vert \ell(x) - \ell(y) \vert \leqslant \vert x - y \vert \). En déduire que la fonction \( \ell \colon x\in \R_+^* \longmapsto \ell(x) \) est continue sur \( \R_+^* \).
  • R6 : On démontre par récurrence \[ \mathcal H_n \colon \forall (x,y)\in ([1~,~{+\infty}])^2, \; \vert u_n(x) - u_n(y) \vert \leqslant 2^{-n}\vert x - y \vert. \] On a clairement \( \mathcal H_0 \). Soit \( n \) un entier pour lequel on a \( \mathcal H_n \). Soit \( (x,y)\in ([1~,~{+\infty}])^2 \). \begin{align*} \vert u_{n+1}(x) - u_{n+1}(y) \vert &\leqslant \vert \sqrt{u_n(x)} - \sqrt{u_n(y)} \vert\\ &\leqslant \left\vert \dfrac{u_n(x) - u_n(y)}{\sqrt{u_n(x)} + \sqrt{u_n(y)}} \right\vert\\ &\leqslant \dfrac{\vert u_n(x) - u_n(y) \vert}{\sqrt{u_n(x)} + \sqrt{u_n(y)}}\\ &\leqslant \dfrac{2^{-n}\vert x - y \vert}{\sqrt{u_n(x)} + \sqrt{u_n(y)}} \qquad \text{ d'après } \mathcal H_n,\\ &\leqslant \dfrac{2^{-n}\vert x - y \vert}{2}, \end{align*} car \( \sqrt{u_n(x)} \geqslant 1 \) et \( \sqrt{u_n(y)} \geqslant 1 \) (voir la question~Q1). En fin de compte on a bien \( \mathcal H_{n+1} \). On a donc \( \forall n\in \N, \, \mathcal H_n \). On en déduit que \[ \forall n\in \N, \, \left\vert 2^n(u_n(x) - 1) - 2^n(u_n(y) - 1) \right\vert = 2^n\vert u_n(x) - u_n(y) \vert \leqslant \vert x - y \vert. \] En faisant tendre \( n \) vers \( +\infty \), par conservation des inégalités larges par passage à la limite, on a bien \[ \vert \ell(x) - \ell(y) \vert \leqslant \vert x - y \vert. \] On en déduit que la fonction \( \ell \) est continue sur \( [1~,~{+\infty}] \) (continue à droite en 1). Par composition, on en déduit que la fonction \( x \in ]0,1] \longmapsto - \ell\left(\frac1x\right) \) est continue sur \( ]0,1] \), ce qui permet de conclure quant à la continuité de la fonction \( \ell \). Pour des raisons étonnantes, dès que l'on construit un logarithme, ce logarithme est continu.

    Q7 : Démontrer que \( \forall x > 0, \; \forall n \in \N, \; u_n^\prime(x) = \dfrac{1}{2^n}\, \dfrac{u_n(x)}{x} \). En déduire que la fonction \( \ell \) est dérivable sur \( \R_+^* \) et calculer sa dérivée.
    (On pourra penser au théorème des accroissements finis). Le théorème des accroissements finis n'est pas au programme des lycées, du moins des lycées français. C'est un point de plus pour la solution d'Audéo. Il va donc falloir bricoler.
  • Paco_del_Rey
    Modifié (January 2022)
    R7 : On démontre par récurrence la proposition qui dépend de l'entier \( n \in \N \) : \[ \mathcal P_n \colon \forall x>0, \; u_n^\prime(x) = \dfrac{1}{2^n}\, \dfrac{u_n(x)}{x}. \] On a clairement \( \mathcal P_0 \) puisque \( \forall x>0, \; u_0(x) = x, \; u_0^\prime(x) = 1 \) et \( \dfrac{1}{2^0}\, \dfrac{u_0(x)}{x} = 1 \). Soit \( n \in \N \) un entier pour lequel on a \( \mathcal P_n \). On a \( \forall x >0 \), \( u_{n+1}(x) = \sqrt{u_n(x)} \) et \begin{align*} u_{n+1}^\prime(x) &= \dfrac{u^\prime_n(x)}{2\sqrt{u_n(x)}}\\ &= \dfrac{1}{2^n}\, \dfrac{u_n(x)}{x} \, \dfrac{1}{2\sqrt{u_n(x)}} \qquad \text{ d'après } \mathcal P_n\\ &= \dfrac{1}{2^{n+1}}\, \dfrac{\sqrt{u_n(x)}}{x} \\ &= \dfrac{1}{2^{n+1}}\,\dfrac{u_{n+1}(x)}{x}. \end{align*} On a bien \( \mathcal P_{n+1} \). D'après le théorème de récurrence, on a \( \forall n \in \N, \; \mathcal P_n \). Soit \( x>0 \). Soit \( h>0 \). D'après le théorème des accroissements finis, on a \[ \dfrac{2^n\left( u_n(x+h) - 1 - (u_n(x) - 1) \right)}{h} = 2^n \, \dfrac{ u_n(x+h) - u_n(x)}{h} = 2^n \, u_n^\prime(c) = \dfrac{u_n(c)}{c}, \] avec \( c \in ]x,x+h[ \). Comme la fonction \( u_n \) est croissante sur \( \R_+^* \), on a \[ \dfrac{u_n(x)}{x+h} \leqslant \dfrac{2^n\left( u_n(x+h) - 1 - (u_n(x) - 1) \right)}{h} \leqslant \dfrac{u_n(x+h)}{x}. \] On fait tendre \( n \) vers \( +\infty \)~:~\( \lim\limits_{n\to\infty} u_n(x) = 1 \) et \( \lim\limits_{n\to\infty} u_n(x+h) = 1 \). Comme \( \lim\limits_{n\to\infty} 2^n\left( u_n(x+h) - 1 \right) = \ell(x+h) \) et \( \lim\limits_{n\to\infty} 2^n\left( u_n(x) - 1 \right) = \ell(x) \), on obtient \[ \dfrac{1}{x+h} \leqslant \dfrac{\ell(x+h)-\ell(x)}{h} \leqslant \dfrac{1}{x}. \] On fait tendre \( h \) vers zéro par valeurs positives. D'après le théorème d'encadrement, on a \[ \ell^\prime_d(x) = \dfrac{1}{x}. \] De même, si \( 0<h<x \), \[ \dfrac{u_n(x-h)}{x} \leqslant \dfrac{2^n\left( u_n(x-h) - 1 - (u_n(x) - 1) \right)}{-h} \leqslant \dfrac{u_n(x)}{x-h}, \] puis \[ \dfrac{1}{x} \leqslant \dfrac{\ell(x-h)-\ell(x)}{-h} \leqslant \dfrac{1}{x-h}. \] et enfin \[ \ell^\prime_g(x) = \dfrac{1}{x}. \] Finalement, \( \ell \) est dérivable en tout point \( x \) de \( \R_+^* \) et \( \ell'(x) = \dfrac1x \).
  • Paco_del_Rey
    Modifié (January 2022)
    On obtient un algorithme pour calculer le logarithme d'un nombre strictement positif. Une implémentation naïve (calculer \( v_n = 2^n(u_n - 1) \) pour \( n \) assez grand) pose un problème. En effet \( 2^n \) croît vigoureusement vers \( +\infty \) et \( u_n - 1 \) tend vers zéro (tout aussi vigoureusement pour que le produit reste stable). On aura numériquement un dépassement de capacité tôt ou tard. Cette implémentation naïve converge numériquement vers zéro dans le programme plus bas (fonction \( {\tt log1} \). On va plutôt calculer \( v_n \) par télescopage : \[ v_n = v_0 + \sum_{k=0}^{n-1} (v_{k+1}-v_k) = v_0 - \sum_{k=0}^{n-1} d_k \] en posant \[ d_k := -(v_{k+1}-v_k) = 2^k \left( \sqrt{u_k} - 1 \right)^2 \] voir question Q2. On a toujours le même problème. On calcule alors \begin{align*} \dfrac{d_{k+1}}{d_k} &= \dfrac{2^{k+1}}{2^k}\, \left( \dfrac{\sqrt{u_{k+1}} - 1}{\sqrt{u_k} - 1} \right)^2 \\ &= 2 \left( \dfrac{\sqrt{u_{k+1}} - 1}{u_{k+1} - 1} \right)^2 \\ &= 2 \left( \dfrac1{\sqrt{u_{k+1}} + 1} \right)^2\\ &= \dfrac{2}{\left( \sqrt{u_{k+1}} + 1 \right)^2} \end{align*} Ce quotient tend vers \( 1/2 \). On a \( d_0 = \left( \sqrt{x} - 1 \right)^2 \) et \[ d_k = d_0 \times \prod_{m=0}^{d-1} \dfrac{d_{k+1}}{d_k} = d_0 \times \prod_{m=0}^{d-1} \dfrac{2}{\left( \sqrt{u_{k+1}} + 1 \right)^2}. \] On obtient la fonction \( {\tt log2} \) du programme. La variable \( n \) est le nombre d'itérations.
    import math
    def log1(x,n):
       u = x
       p = 1
       for k in range(n):
           u = math.sqrt(u)
           p = 2*p
       return(p*(u-1))
    def log2(x,n):    u = math.sqrt(x)    d = x - 2*math.sqrt(x) + 1    s = x - 1 for k in range(n):        s = s - d u = math.sqrt(u)        f = (1 + u) * (1 + u) d = 2*d/f     return(s)
  • Paco_del_Rey
    Modifié (January 2022)
    L'algorithme ci-dessus n'est pas convenable pour un calcul des logarithmes à la main. En effet, il faut extraire des racines carrées (à la main, méthode de la potence, je peux détailler) pour chaque valeur de \( x \). En 1617, Henry Briggs (1561-1630) qui cherchait à établir une table de logarithmes, utilisa l'algorithme suivant qui ne nécessite que le calcul une fois pour toutes des racines carrées successives de la suite \( (u_n)_{n\in\N^*} \) : \( u_1 = \sqrt{10} \) et \( \forall n\in\N^*, \, u_{n+1} := \sqrt{u_n} \). On commence par se ramener au calcul du logarithme (décimal) d'un nombre \( x \) entre 1 et 10. On pose \( x_0 := x \) et \( \ell_0 = 0 \). Si \( x_n \geqslant u_n \) alors on pose \( x_{n+1} := \dfrac{x_n}{c_n} \) et \( \ell_{n+1} := \ell + \dfrac{1}{2^n} \). Si \( x_n < u_n \) alors on pose \( x_{n+1} := x_n \) et \( \ell_{n+1} := \ell \). La suite \( (u_n)_n \) converge vers 1. De plus, une récurrence simple montre que \( \forall n > 1, \, 1 \leqslant x_n < u_{n-1} \). La suite \( (u_n)_n \) converge aussi vers 1. Au bout de 50 itérations, les puissances de 2 sont inférieures à \( 10^{-15} \). (car \( 2^{10} = 1024 > 10^3 \)). On a alors \( x = u_{n_1}\times u_{n_2}\times \ldots u_{n_k} \times x_{50}\) où \( n_1, n_2, \ldots, n_k \) désignent les indices \( n < 50 \) pour lesquels on a \( x_n \geqslant u_n \). On a alors \[ \ell_{50} = \dfrac{1}{2^{n_1}} + \dfrac{1}{2^{n_2}} + \ldots + \dfrac{1}{2^{n_k}}. \] Or on a clairement \( u_n = 10^{1/2^n} \) donc \( \log_{10}(u_n) = \dfrac{1}{2^n} \) et \( \log_{10}(x) = \log_{10}(x_n) + \ell_n \).
     Le programme suivant réalise cet algorithme.
    from math import sqrt
    def Log_Briggs(x):
       expo = 0
       if x > 10 :                     # si le nombre est plus grand que 10
           while x > 10:          # on le ramène à un nombre compris entre 1 et 10
           expo = expo + 1    # en gardant la trace de la puissance de 10
           x = x/10    elif x < 1:       while x < 1:       expo = expo - 1       x = 10*x    l = 0    puiss2 = 1    for k in range(50):         puiss2 = puiss2/2
            if L[k] < x:            l = l + puiss2            x = x/L[k]    return l + expo L = [] racine = 10 for k in range(50):    racine = sqrt(racine)    L.append(racine) print(Log_Briggs(314159))
  • Paco_del_Rey
    Modifié (January 2022)
    L'algorithme précédent calculait en fait le développement de \( \log_{10}(x) \) en base \( 2 \). À chaque itération, il donne un digit supplémentaire. On parle d'algorithme goutte à goutte. On peut l'adapter pour calculer le logarithme népérien d'un nombre en base 10. Pour cela on remplace la suite \( (u_n)_n \) par une suite de racines dixièmes, à savoir \( u_n := \exp(1/10^n) \) qu'on pourrait calculer à la main puisque \( u_n = \lim\limits_{N\to\infty} \sum\limits_{k=0}^N \dfrac{1}{k!10^{nk}} \). Dans le programme qui suit, j'ai cédé à la facilité (pour gagner de la place) en me servant du module \( \tt math \) pour calculer ces exponentielles. Bien entendu, les exponentielles sont postérieures à Briggs.
    from math import exp
    def Ln_Briggs(x,n):
       expo = 0
       e1 = exp(1)
       if x > e1 :  
           while x > e1:           expo = expo + 1           x = x/e1    elif x < 1:        while x < 1:            expo = expo - 1            x = e1*x    l = 0 
       puisse = 1
       for k in range(n): 
           puisse = puisse/10        Lk = exp(puisse)        while Lk < x:           l = l + puisse           x = x/Lk    return l + expo
  • Pour en revenir à la discussion de savoir ce qu'on doit appeler algorithme ou méthode de Briggs, le lecteur courageux pourra consulter à profit ce lien.
    Briggs semble avoir utilisé plusieurs techniques. Ceci peut expliquer les confusions.
Connectez-vous ou Inscrivez-vous pour répondre.