Exponentielles et séries alternées
jeudi 24 juillet 2025
en cours de rédaction
1 – Calcul des séries alternées
Rappelons le théorème des suites adjacentes : si \((u_n)_{n \geq 0}\) et \((v_n)_{n \geq 0}\) sont deux suites de nombres réels, respectivement croissante et décroissante, avec \(u_n \leq v_n\) pour tout indice \(n\) et \(v_n - u_n \underset{n\infty}{\longrightarrow} 0\), alors \((u_n)_{n \geq 0}\) et \((v_n)_{n \geq 0}\) convergent et ont la même limite. De plus, si \(\mathrm{S}\) est cette limite commune, alors pour tout indice \(n\) on a \(u_n \leq \mathrm{S} \leq v_n\).
Maintenant soit \((t_n)_{n \geq 0}\) une suite de nombres réels, positive, décroissante, et qui converge vers zéro. Pour chaque indice \(n\) posons
\[ s_n = t_0 - t_1 + t_2 - t_3 + t_4 - \ldots + (-1)^n t_n = \sum_{k = 0}^n (-1)^k t_k. \]
Démontrons par récurrence sur l'entier \(n\) que les termes de cette nouvelle suite s'ordonnent ainsi :
\[ 0 \leq s_{1} \leq s_{3} \leq s_{5} \leq \ldots \leq s_{2n+1} \leq s_{2n} \leq \ldots \leq s_{4} \leq s_{2} \leq s_{0}. \]
(dessin)
Initialisation. Pour \(n = 0\) il s'agit de prouver que \(0 \leq s_{1} \leq s_{0}\). Explicitons ceci : on a \(s_0 = t_0\) et \(s_1 = t_0 - t_1\). Puisque \((t_n)_{n \geq 0}\) est décroissante, on a \(s_1 = t_0 - t_1 \geq 0\), et puisque \((t_n)_{n \geq 0}\) est positive, on a \(s_1 = t_0 - t_1 \leq t_0 = s_0\). Et la « grosse inégalité » est donc démontrée pour \(n = 0\).
Hérédité. Fixons un entier \(n\) et supposons la grosse inégalité, comme écrite ci-dessus, vraie. Voyons comment s'y insèrent les termes correspondant à \(n + 1\), à savoir \(s_{2(n+1)} = s_{2n + 2}\) et \(s_{2(n+1)+1} = s_{2n+3}\). Tout d'abord remarquons que \(s_{2n+3} = s_{2n+2} - t_{2n + 3} \leq s_{2n+2}\), puisque \(t_{2n+3}\) est positif. Ensuite, on a
\[ s_{2n+3} = s_{2n+1} + (t_{2n + 2} - t_{2n + 3}) \geq s_{2n+1} \]
puisque, \((t_n)_{n \geq 0}\) étant décroissante, on a \(t_{2n + 2} - t_{2n + 3} \geq 0\). Enfin, on a
\[ s_{2n+2} = s_{2n} - t_{2n+1} + t_{2n} = s_{2n} - (t_{2n+1} - t_{2n}) \leq s_{2n} \]
avec toujours la même justification. Ce qui donne bien
\[ 0 \leq s_{1} \leq s_{3} \leq \ldots \leq s_{2n+1} \leq s_{2n+3} \leq s_{2n+2} \leq s_{2n} \leq \ldots \leq s_{2} \leq s_{0}, \]
c'est-à-dire la grosse inégalité au rang \(n + 1\).
On peut alors énoncer le
Théorème « spécial » (pour la convergence des séries alternées).
Soit \((t_n)_{n \geq 0}\) une suite de nombres réels, positive, décroissante, et qui converge vers zéro ; et soit \(s_n = t_0 - t_1 + t_2 - t_3 + \ldots + (-1)^n t_n\) la série alternée qui en résulte.
i) Cette série converge : il y a un réel \(\mathrm{S}\) tel que \(s_n \underset{n\infty}\longrightarrow \mathrm{S}\).
ii) Pour tout indice \(n\) le reste \(\mathrm{S} - s_{n}\) est du signe de \((-1)^{n+1}\).
iii) De plus on a \(\left|\mathrm{S} - s_{n}\right| \leq t_{n+1}\).
Preuve. On fabrique deux suites à partir de \((s_n)_{n \geq 0}\) : les sommes partielles de rangs pairs \(v_n = s_{2n}\) et les sommes partielles de rangs impairs \(u_n = s_{2n + 1}\). Alors \((u_n)_{n \geq 0}\) et \((v_n)_{n \geq 0}\) sont adjacentes : la grosse inégalité donne pour tout indice \(n\)
\[ u_{n} \leq u_{n+1} \leq v_{n+1} \leq v_n, \]
ce qui montre déjà que \((u_n)_{n \geq 0}\) est croissante, que \((v_n)_{n \geq 0}\) est décroissante, et que la seconde majore la première. Enfin, on a \[ v_n - u_n = s_{2n} - s_{2n+1} = -(-t_{2n+1}) = t_{2n+1} \geq 0. \]
D'après le théorème des suites adjacentes, elles ont donc une limite commune \(\mathrm{S}\). On a \(s_{2n} \underset{n\infty}{\longrightarrow} \mathrm{S}\) et \(s_{2n + 1} \underset{n\infty}{\longrightarrow} \mathrm{S}\), donc en fait \(s_{n} \underset{n\infty}{\longrightarrow} \mathrm{S}\). Et le i) est établi.
Mais le théorème des suites adjacentes est un peu plus précis : on a \(u_n \leq \mathrm{S} \leq v_n\), c'est-à-dire \(s_{2n+1} \leq \mathrm{S} \leq s_{2n}\), pour tout indice \(n\). Ce qui signifie que dans la grosse inégalité (toujours elle !) la limite se positionne ainsi :
\[ 0 \leq s_{1} \leq s_{3} \leq \ldots \leq s_{2n+1} \leq \mathrm{S} \leq s_{2n} \leq \ldots \leq s_{2} \leq s_{0}. \]
Donc si \(n\) est impair on a \(s_{n} \leq \mathrm{S}\) c'est-à-dire \(\mathrm{S} - s_n \geq 0\), et si \(n\) est pair on a \(\mathrm{S} \leq s_{n}\) c'est-à-dire \(\mathrm{S} - s_n \leq 0\). Dans tous les cas on voit que \(\mathrm{S} - s_n\) est du signe de \((-1)^{n+1}\) et le ii) est établi.
Enfin, si \(n\) est impair on a \(\mathrm{S} \leq s_{n+1}\) donc
\[ 0 \leq \mathrm{S} - s_n \leq s_{n+1} - s_n = t_{n+1}, \]
et si \(n\) est pair on a \(\mathrm{S} \geq s_{n+1}\) donc
\[ 0 \geq \mathrm{S} - s_n \geq s_{n+1} - s_n = -t_{n+1} \quad\quad\Longleftrightarrow\quad\quad 0 \leq -(\mathrm{S} - s_n) \leq t_{n+1}. \]
Dans les deux cas on obtient \( |\mathrm{S} - s_n| \leq t_{n+1}\), c'est-à-dire le point iii). C.Q.F.D.
Et maintenant trois remarques essentielles. La première : le théorème reste vrai lorsque \((t_n)_{n \geq 0}\) est négative, puisqu'on peut l'appliquer à \((-t_n)_{n \geq 0}\) qui, elle, sera positive. Il faut juste changer quelques formulations : dire « \((|t_n|)_{n \geq 0}\) est décroissante » dans les hypothèses, « le reste \(\mathrm{S} - s_n\) est du signe de \((-1)^{n+1} t_{n+1}\) » dans le ii) et « \(|\mathrm{S} - s_n| \leq |t_{n+1}|\) » dans le iii). La deuxième : il reste également vrai si les hypothèses ne sont vérifiées qu'à partir d'un certain rang (puisqu'on peut l'appliquer à la suite démarrant à \(n_0\) plutôt qu'à zéro). La troisième, et c'est ce qui nous intéresse : le iii) nous donne un algorithme pour calculer \(\mathrm{S}\) à \(\epsilon\) près. En effet, la relation
\[ |\mathrm{S} - s_n| \leq |t_{n+1}| \]
dit que la somme partielle \(s_n\) est une valeur approchée de \(\mathrm{S}\) à \(t_{n+1}\) près : il suffit donc de trouver un indice \(n\) pour lequel \(\left|t_{n + 1}\right| \leq \epsilon\).
2 – La fonction exponentielle
Mettons cela en œuvre pour calculer l'exponentielle d'un nombre négatif. Pour \(x \in \left[0\,;\,+\infty\right[\) on a
\[ e^{-x} = \sum_{k = 0}^{\infty} (-1)^k \times \frac{x^k}{k!}. \]
La suite définie par \(t_k = x^k/k!\) est décroissante à partir d'un certain rang, puisqu'en formant le rapport (ce qu'on peut faire lorsque \(x\) n'est pas nul) on obtient
\[ \frac{t_{k+1}}{t_k} = \frac{x}{k + 1}, \]
qui est effectivement inférieur à \(1\) lorsque \(k + 1\) dépasse \(x\) (ce qui ne manquera pas d'arriver). On l'a dit : les résultats de la section précédente restent vrais lorsque \((t_k)_{k \geq 0}\) est décroissante seulement à partir d'un certain rang, à condition d'additionner les termes jusqu'à la partie décroissante. Si \(\epsilon\) est assez petit, il n'y aura pas de problème. Ici on prend \(\epsilon\) le plus petit possible, étant donnés la valeur de \(x\) et le nombre de chiffres significatifs qu'on a choisi ici.
# Exponentielle de -x (pour x positif)
from numpy import log as ln
def ExponentielleNégatif(x) :
n = 1 - int(float(x) / ln(10))
ε = Décimal(10) ** (n - NB_CHIFFRES)
s = Décimal(0) ; k = 0 ; t = Décimal(1)
while t > ε :
if k % 2 == 0 :
s += t
else :
s -= t
t *= x ; k += 1 ; t /= k
return s
Il est maintenant facile d'écrire le programme général, en utilisant la relation \(e^{-x} = 1/e^x\) (ou plutôt \(e^x = 1/e^{-x}\)).
def Exponentielle(x) :
if x == 0 :
return Décimal(1)
elif x >= 0 :
return Décimal(1) / ExponentielleNégatif(x)
else :
return ExponentielleNégatif(-x)
Voyons quelques exemples : les nombres \(e = e^1\) et \(e^{-1}\).
>>> x = Exponentielle(Décimal(1))
>>> Afficher(x)
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427427466391932003059921817413596629043572900334295260595630738132328627943490763233829880753195251019011573834187930702154089149934884167509244761460668082264800168477411853742345442437107539077744992069551702761838606261331384583000752044933826560297606737113200709328709127443747047230696977209310141692836819025515108657463772111252389784425056953696770785449969967946864454905987931636889230098793127736178215424999229576351482208269895193668033182528869398496465105820939239829488793320362509443117301238197068416140397019837679320683282376464804295311802328782509819455815301756717361332069811250996181881593041690351598888519345807273866738589422879228499892086805825749279610484198444363463244968487560233624827041978623209002160990235304369941849146314093431738143640546253152096183690888707016768396424378140592714563549061303107208510383750510115747704171898610687396965521267154688957035035
>>> x = Exponentielle(Décimal(-1))
>>> Afficher(x)
3.678794411714423215955237701614608674458111310317678345078368016974614957448998033571472743459196437466273252768439952082469757927901290086266535894940987830921943673773381150486389911251456163449877199786844759579397473025498924954532393662079648105146475206122942230891649265666003650745772837055328537383881068047876119568298934544973507393185992166174330035699372082071022775180215849942337816907156676717623366082303761229156237572094700070405097334256775762525280303768861651570936537995427406370717878445419467490931306980560163702111389774228214017380232832465287291389004660986659512444097699851459164287803720202510224578732111059537776807437112206240005167965280975444780286486006838564200433684662484349386918262062518994821970992423425207510492093445285124486022451380986417421061219536368310078209224804653079806562854154786061793155705987170215999699188228265397927803747127438635156296714511943986702682452679716814389772141359579690542529103548859731078233269414118579235695949376985 * 10 ** -1
3 – La fonction arc tangente
La même méthode permet de calculer \(\arctan(x)\) lorsque \(x \in \left]-1\,;\,1\right[\) : pour ces nombres-là on a en effet
\[ \arctan(x) = \sum_{k = 0}^{\infty} (-1)^k \times \frac{x^{2k + 1}}{2k + 1}. \]
Attention : comme il n'y a que des puissances d'exposants impairs de \(x\), le terme \(t_k = x^{2k + 1}/(2k + 1)\) est toujours du même signe. On pourrait, en théorie, appliquer le théorème spécial lorsque \(x = \pm 1\), mézalor \(t_k\) ne tend pas assez vite vers zéro et on n'obtiendra jamais plus de quelques chiffres significatifs.
# Arc tangente (à ε près) d'un nombre x dans ]-1 ; 1[.
def Arctan(x, ε) :
x_carré = x ** 2 ; y = abs(x)
s = Décimal(0) ; k = 0 ; dén = 1 ; t = y / dén
while t > ε :
if k % 2 == 0 :
s += t
else :
s -= t
y *= x_carré ; k += 1 ; dén += 2 ; t = y / dén
if x >= 0 :
return s
else :
return -s
Testons.
>>> ε = Décimal(10) ** (-NB_CHIFFRES)
>>> A = Arctan(Décimal(1) / Décimal(5), ε)
>>> B = Arctan(Décimal(1) / Décimal(239), ε)
>>> Afficher(16 * A - 4 * B)
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420199
C'est presque \(\pi\)... nous verrons pourquoi dans le prochain épisode.