La constante d'Euler et Mascheroni

mardi 15 juillet 2025



en cours de rédaction


Le \(n\)-ième nombre harmonique est la somme des inverses des entiers jusqu'à \(n\) \[\ h_n = \frac{1}{1} + \frac{1}{2} + \frac{1}{3} + \frac{1}{4} + \ldots + \frac{1}{n}. \] Les nombres harmoniques forment une suite divergente, qui tend vers \(+\infty\) à la même vitesse que \(\ln(n)\). Plus précisément la différence des deux \(h_n - \ln(n)\) tend vers une constante (strictement positive) qu'on appelle \(\gamma\) : c'est la constante d'Euler et Mascheroni et nous allons la calculer !


1 – Décimales de la constante d'Euler-Mascheroni

Le calcul direct de \(h_n\) est bien trop long pour être envisagé : par définition \(h_n - h_{n - 1} = 1/n\), de sorte qu'il faut additionner \(n\) termes pour connaître \(h_n\) à la précision \(1/n\). Si on veut une précision \(\epsilon = 10^{-\tt{NB\_CHIFFRES}}\) il faut donc additionner \(n = 10^{\tt{NB\_CHIFFRES}}\), c'est beaucoup ! Mais nous reviendrons sur le calcul rapide de \(h_n\) dans la section 2.

Ici je vais présenter l'algorithme de Brent et McMillan dans leur article some new algorithms for high-precision computation of Euler's constant (Mathematics of computation, volume 34, numéro 149, janvier 1980). Brent c'est celui de la méthode de Brent du module scipy.optimize, qui est la « version améliorée de l'algorithme de dichotomie ». L'entier \(n\) étant fixé, et suivant leurs notations, posons \[ \mathrm{A}_k = \left(\frac{n^k}{k!}\right)^{\!2} \times (h_k - \ln(n)) \quad\quad\text{et}\quad\quad \mathrm{B}_k = \left(\frac{n^k}{k!}\right)^{\!2}, \] de sorte qu'évidemment \(\mathrm{A}_k / \mathrm{B}_k = h_k - \ln(n)\). On note \[ \mathrm{U_k} = \mathrm{A_0} + \mathrm{A_1} + \ldots + \mathrm{A_k} \quad\quad\text{et}\quad\quad \mathrm{V_k} = \mathrm{B_0} + \mathrm{B_1} + \ldots + \mathrm{B_k} \] les sommes partielles des séries de termes généraux \(\mathrm{A}_k\) et \(\mathrm{B}_k\). Nous allons voir que ces séries sont convergentes et calculer leurs sommes \(\mathrm{U} = \underset{k\infty}{\lim}\;\mathrm{U_k}\) et \(\mathrm{V} = \underset{k\infty}{\lim}\;\mathrm{V_k}\).

Propriété (calcul de \(\mathrm{U}\) et \(\mathrm{V}\)).

i) Les séries de termes généraux \(\mathrm{A}_k\) et \(\mathrm{B}_k\) sont convergentes.

ii) Si \(\mathrm{A}_k \leq \epsilon\), alors \(\mathrm{U}_k\) est une valeur approchée de \(\mathrm{U}\) à \(\epsilon\) près.

iii) De même si \(\mathrm{B}_k \leq \epsilon\), alors \(\mathrm{V}_k\) est une valeur approchée de \(\mathrm{V}\) à \(\epsilon\) près.


Preuve. ? C.Q.F.D.


?

Propriété (calcul de la constante d'Euler-Mascheroni).

Avec les notations précédentes on a \[ 0 < \frac{\mathrm{U}}{\mathrm{V}} - \gamma < \pi \times e^{-4n}. \]


ε = Décimal(10) ** (-NB_CHIFFRES)

from numpy import pi as π, exp, log as ln
def Trouver_n() :
    n = 1/4 * (ln(π) + NB_CHIFFRES * ln(10))
    return 1 + int(n)


>>> Trouver_n()
576


>>> RésumerFormules(576)
ln(576) = 20 * argcoth(3) - 4 * argcoth(7)
ln(576) = 6 * argcoth(5) + 16 * argcoth(3) - 2 * argcoth(17) - 2 * argcoth(7)
ln(576) = 4 * argcoth(2) + 14 * argcoth(3) - 2 * argcoth(5) - 2 * argcoth(7)
ln(576) = 20 * argcoth(3) - 4 * argcoth(7)
ln(576) = 12 * argcoth(2) - 4 * argcoth(17)
ln(576) = 20 * argcoth(3) - 4 * argcoth(7)
ln(576) = 12 * argcoth(2) - 4 * argcoth(17)
ln(576) = 6 * argcoth(2) + 10 * argcoth(3) - 2 * argcoth(17) - 2 * argcoth(7)
ln(576) = 10 * argcoth(3) + 6 * argcoth(2) - 2 * argcoth(7) - 2 * argcoth(17)
ln(576) = 20 * argcoth(3) - 4 * argcoth(7)
x1 = argcoth(Décimal(3), ε / (2 * 20))
x2 = argcoth(Décimal(7), ε / (2 * 4))
ln_576 = 20 * x1 - 4 * x2

def EulerMascheroni(n, ln_n) :
    n_carré = n ** 2
    A = -ln_n ; B = Décimal(1)
    U = A ; V = B ; k = 0
    while A > ε or B > ε :
        k += 1
        B *= n_carré ; B /= k ** 2
        V += B
        A *= n_carré ; A /= k ; A += B ; A /= k
        U += A
    print("Nombre de termes calculés :", k)
    return U / V

>>> γ = EulerMascheroni(576, ln_576)
Nombre de termes calculés : 2485
>>> Afficher(γ)
5.772156649015328606065120900824024310421593359399235988057672348848677267776646709369470632917467495146314472498070824809605040144865428362241739976449235362535003337429373377376739427925952582470949160087352039481656708532331517766115286211995015079847937450857057400299213547861466940296043254215190587755352673313992540129674205137541395491116851028079842348775872050384310939973613725530608893312676001724795378367592713515772261027349291394079843010341777177808815495706610750101619166334015227893586796549725203621287922655595366962817638879272680132431010476505963703947394957638906572967929601009015125195950922243501409349871228247949747195646976318506676129063811051824197444867836380861749455169892792301877391072945781554316005002182844096053772434203285478367015177394398700302370339518328690001558193988042707411542227819716523011073565833967348717650491941812300040654693142999297779569303100503086303418569803231083691640025892970890985486825777364288253954925873629596133298574739303 * 10 ** -1



2 – Approximations des nombres harmoniques




3 – Est-ce un nombre rationnel ?