mathcalculusapproximation

Séries de Taylor

Comment pense une calculatrice ? Découvrez comment les fonctions complexes sont approximées par des polynômes.

Janvier 202622 min de lecture
🍌
Nouveau : Mode Monkey 🐵
Certaines parties de cet article peuvent être complexes. Activez le switch "Monkey Mode" à côté des titres pour voir une version simplifiée et vulgarisée !

Comment pense une calculatrice ?

Imaginez que vous devez calculer sin(2.5)\sin(2.5) avec seulement un papier et un crayon. Pas de calculatrice, pas de table de valeurs. Comment feriez-vous ? C'est exactement le problème que les mathématiciens ont résolu il y a des siècles, et la solution est d'une élégance remarquable : les Série de Taylor.

Votre calculatrice ne connaît pas vraiment le sinus. Elle ne fait que des additions, des multiplications et des divisions. Pourtant, elle vous donne sin(2.5)=0.5984...\sin(2.5) = 0.5984... en une fraction de seconde. Son secret ? Elle approxime les fonctions complexes par des polynômes — des expressions qu'elle sait calculer.

« Les séries de Taylor transforment l'inconnu en familier, le complexe en simple. » — Brook Taylor, mathématicien anglais (1685-1731)

L'Art de l'Approximation Locale

L'idée fondamentale est simple : on veut "coller" un polynôme à une courbe en un point précis. Mais pas n'importe comment — on veut que le polynôme épouse la courbe le plus fidèlement possible autour de ce point.

Pour cela, on utilise les Dérivée de la fonction. Chaque dérivée capture une information différente sur le comportement de la courbe :

  • La valeur f(a)f(a) : où se trouve la courbe au point aa
  • La dérivée première f(a)f'(a) : la pente (direction) de la courbe
  • La dérivée seconde f(a)f''(a) : la courbure (comment la pente change)
  • Les dérivées suivantes : des informations de plus en plus fines sur la forme

Pensez à une voiture sur une route : l'ordre 0 (la valeur) vous dit où elle se trouve (sa position), l'ordre 1 (la dérivée première) vous dit à quelle vitesse elle roule et dans quelle direction, l'ordre 2 (la dérivée seconde) vous dit si elle accélère ou freine. Chaque ordre supplémentaire capture un niveau de détail plus fin sur le mouvement — exactement comme Taylor capture des détails de plus en plus fins sur la forme d'une courbe.

Plus on ajoute de termes (donc de dérivées), plus notre polynôme "comprend" la forme de la fonction originale.

La Formule Générale

La série de Taylor d'une fonction ff autour d'un point aa s'écrit :

f(x)=n=0f(n)(a)n!(xa)nf(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(a)}{n!}(x-a)^n

Développée, cette formule devient :

f(x)=f(a)+f(a)(xa)+f(a)2!(xa)2+f(a)3!(xa)3+f(x) = f(a) + f'(a)(x-a) + \frac{f''(a)}{2!}(x-a)^2 + \frac{f'''(a)}{3!}(x-a)^3 + \cdots

Chaque terme ajoute une "couche" de précision. Le premier terme est une constante, le second une droite, le troisième une parabole, et ainsi de suite.

Le Reste de Taylor-Lagrange

Pour qu'une série de Taylor soit utile, il faut quantifier la précision. Si nous arrêtons la série à l'ordre nn, nous obtenons un polynôme Pn(x)P_n(x) et un reste Rn(x)R_n(x) tel que f(x)=Pn(x)+Rn(x)f(x) = P_n(x) + R_n(x).

D'après le théorème de Taylor-Lagrange, il existe un réel ξ\xi entre aa et xx tel que :

Rn(x)=f(n+1)(ξ)(n+1)!(xa)n+1R_n(x) = \frac{f^{(n+1)}(\xi)}{(n+1)!}(x-a)^{n+1}

C'est ce terme qui nous permet de prouver la convergence : si Rn(x)0R_n(x) \to 0 quand nn \to \infty, alors la série représente parfaitement la fonction.

Cas Spécial : Série de Maclaurin

Quand on développe autour de a=0a = 0, on obtient la Colin Maclaurin, une forme simplifiée :

f(x)=n=0f(n)(0)n!xn=f(0)+f(0)x+f(0)2!x2+f(x) = \sum_{n=0}^{\infty} \frac{f^{(n)}(0)}{n!}x^n = f(0) + f'(0)x + \frac{f''(0)}{2!}x^2 + \cdots

Les Célébrités : e^x, sin(x), cos(x)

Certaines fonctions ont des développements de Taylor particulièrement élégants. Ce sont les "stars" des séries de Taylor, utilisées partout en physique, en ingénierie et en informatique.

L'Exponentielle e^x

La fonction Fonction exponentielle est unique : elle est égale à toutes ses dérivées ! Donc f(n)(0)=e0=1f^{(n)}(0) = e^0 = 1 pour tout nn.

ex=n=0xnn!=1+x+x22!+x33!+x44!+e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \frac{x^4}{4!} + \cdots

Cette série converge pour tout xx réel — l'exponentielle n'a pas de limite !

Le Sinus sin(x)

Les dérivées du Sinus (mathématiques) suivent un cycle : sin,cos,sin,cos,sin,...\sin, \cos, -\sin, -\cos, \sin, .... En x=0x = 0, seuls les termes impairs survivent :

sin(x)=n=0(1)nx2n+1(2n+1)!=xx33!+x55!x77!+\sin(x) = \sum_{n=0}^{\infty} \frac{(-1)^n x^{2n+1}}{(2n+1)!} = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \cdots

Remarquez l'alternance des signes (++, -, ++, -...) et les puissances impaires uniquement.

Le Cosinus cos(x)

Le Cosinus est le "frère jumeau" du sinus, mais avec les puissances paires :

cos(x)=n=0(1)nx2n(2n)!=1x22!+x44!x66!+\cos(x) = \sum_{n=0}^{\infty} \frac{(-1)^n x^{2n}}{(2n)!} = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + \cdots

Ces deux séries convergent pour tout xx réel, ce qui en fait des outils universels.

L'Unification Suprême : L'Identité d'Euler

L'un des plus grands pouvoirs des séries de Taylor est leur capacité à s'étendre au-delà des nombres réels. Si nous injectons un nombre imaginaire pur ixix dans la série de l'exponentielle, une magie mathématique opère.

La Démonstration

Partons de la série de Maclaurin pour exe^x et remplaçons xx par ixix :

eix=1+ix+(ix)22!+(ix)33!+(ix)44!+(ix)55!+e^{ix} = 1 + ix + \frac{(ix)^2}{2!} + \frac{(ix)^3}{3!} + \frac{(ix)^4}{4!} + \frac{(ix)^5}{5!} + \cdots

En utilisant la propriété de l'unité imaginaire (i2=1i^2 = -1), nous pouvons simplifier les puissances :

eix=1+ixx22!ix33!+x44!+ix55!e^{ix} = 1 + ix - \frac{x^2}{2!} - i\frac{x^3}{3!} + \frac{x^4}{4!} + i\frac{x^5}{5!} - \cdots

Regroupons maintenant les termes réels d'un côté et les termes imaginaires de l'autre :

eix=(1x22!+x44!)+i(xx33!+x55!)e^{ix} = \left(1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \cdots\right) + i\left(x - \frac{x^3}{3!} + \frac{x^5}{5!} - \cdots\right)

Nous retrouvons exactement les séries de Taylor du cosinus et du sinus ! Nous venons de démontrer la formule d'Euler :

eix=cos(x)+isin(x)e^{ix} = \cos(x) + i\sin(x)

Démo Interactive

Visualisez comment le polynôme de Taylor "enveloppe" progressivement la fonction réelle. Utilisez le slider pour augmenter le degré nn et observez l'approximation s'améliorer.

Démo Interactive

Essayez de changer la fonction (exe^x, sin\sin, cos\cos) et le point d'expansion aa. Remarquez comment l'approximation est excellente près du centre mais se dégrade en s'éloignant.

Convergence et Rayon de Convergence

Une question cruciale : jusqu'où peut-on faire confiance à notre approximation ? C'est là qu'intervient le Rayon de convergence.

Le rayon de convergence RR définit un intervalle (aR,a+R)(a-R, a+R) autour du point d'expansion où la série converge vers la vraie valeur de la fonction. En dehors de cet intervalle, la série peut diverger — elle "explose" vers l'infini.

  • exe^x, sin(x)\sin(x), cos(x)\cos(x) : R=R = \infty (convergent partout)
  • ln(1+x)\ln(1+x) : R=1R = 1 (converge seulement pour x1|x| \leq 1)
  • 11x\frac{1}{1-x} : R=1R = 1 (la série géométrique)
  • arctan(x)\arctan(x) : R=1R = 1

Imaginez la série de Taylor comme une nappe posée sur une table, centrée au point d'expansion. Pour exe^x, la nappe est infinie — elle s'étend à l'infini dans toutes les directions sans jamais se déchirer. Mais pour ln(1+x)\ln(1+x), la nappe se déchire dès qu'on s'éloigne de plus d'une unité du centre : au-delà de x>1|x| > 1, l'approximation "explose" et devient inutilisable. Cette image aide à comprendre pourquoi certaines fonctions sont plus "dociles" que d'autres.

Intuitivement, le rayon de convergence est limité par la "singularité" la plus proche dans le plan complexe — un point où la fonction n'est pas définie ou devient infinie.

Pourquoi l'Approximation "Explose" ?

Loin du centre d'expansion, les termes (xa)n(x-a)^n deviennent très grands. Si la série ne converge pas assez vite, l'approximation diverge.

Exemple frappant avec ln(1+x)\ln(1+x) : Pour x=1x=1, la série converge (lentement) vers ln(2)0.69\ln(2) \approx 0.69. Mais pour x=2x=2, elle explose complètement vers l'infini, alors que ln(3)1.1\ln(3) \approx 1.1 est une valeur parfaitement raisonnable ! C'est la notion de rayon de convergence.

C'est pourquoi les calculatrices utilisent des astuces : elles ramènent d'abord l'argument dans un petit intervalle (par exemple [0,π/4][0, \pi/4] pour les fonctions trigonométriques) avant d'appliquer Taylor.

CORDIC : L'Algorithme des Calculatrices

Pour aller plus loin, il faut comprendre pourquoi CORDIC a supplanté Taylor dans le matériel (CPU/GPU). Taylor nécessite des multiplicateurs performants. CORDIC, lui, n'utilise que des additions et des décalages de bits (shifts).

C'est pourquoi il est encore omniprésent aujourd'hui : dans les FPGA, les microcontrôleurs (MCU) à bas coût, et même dans les calculateurs avioniques critiques où la robustesse et la simplicité du matériel sont primordiales.

Le Concept de Rotation Itérative

L'idée est de faire tourner un vecteur (1,0)(1, 0) par étapes successives pour atteindre l'angle θ\theta souhaité. À la fin, les coordonnées du vecteur seront (cosθ,sinθ)(\cos \theta, \sin \theta).

Au lieu de tourner d'un angle quelconque, on tourne d'angles prédéfinis γi\gamma_i dont la tangente est une puissance de 2 : tan(γi)=2i\tan(\gamma_i) = 2^{-i}.

  • γ0=arctan(1)=45\gamma_0 = \arctan(1) = 45^\circ
  • γ1=arctan(0.5)26.565\gamma_1 = \arctan(0.5) \approx 26.565^\circ
  • γ2=arctan(0.25)14.036\gamma_2 = \arctan(0.25) \approx 14.036^\circ
Démo Interactive

Implémentation de l'algorithme CORDIC

Voici comment une calculatrice implémente réellement `sin` et `cos` sans aucune multiplication lourde :

cordic.jsjavascript
/**
* Implémentation de CORDIC pour calculer sin et cos
* @param {number} targetAngle - L'angle en radians
* @param {number} iterations - Précision souhaitée (typiquement 40-60)
*/
function cordic(targetAngle, iterations = 50) {
// Table des angles pré-calculés (arctan(2^-i))
const angles = Array.from({ length: iterations }, (_, i) => Math.atan(Math.pow(2, -i)));
// Constante de gain de convergence K (tend vers ~0.6072)
let k = 1.0;
for (let i = 0; i < iterations; i++) {
k *= 1 / Math.sqrt(1 + Math.pow(2, -2 * i));
}

let x = 1.0; // Point de départ sur l'axe X
let y = 0.0;
let currentAngle = 0.0;

for (let i = 0; i < iterations; i++) {
// On décide du sens de la rotation (gauche ou droite)

Pourquoi c'est "plus avancé" que Taylor ?

  • Parallélisme : CORDIC calcule cos\cos et sin\sin en même temps.
  • Stabilité : Contrairement à Taylor, l'erreur est répartie uniformément sur tout le cercle.
  • Complexité : Taylor est en O(n2)O(n^2) ou O(nlogn)O(n \log n) pour la multiplication de grands nombres, CORDIC est purement linéaire O(n)O(n) en termes d'opérations élémentaires de processeur.

Au-delà des Polynômes : Les Approximants de Padé

Bien que les séries de Taylor soient puissantes, elles présentent deux défauts majeurs :

  • La divergence rapide dès que l'on sort du rayon de convergence.
  • L'inefficacité pour approximer des fonctions qui présentent des asymptotes ou des pôles.

C'est ici qu'interviennent les Approximants de Padé. Au lieu d'utiliser un polynôme P(x)P(x), on utilise une fraction :

f(x)PL(x)QM(x)f(x) \approx \frac{P_L(x)}{Q_M(x)}

Pourquoi est-ce plus efficace ?

Contrairement à un polynôme qui tend toujours vers l'infini quand xx \to \infty, une fraction rationnelle peut :

  • Modéliser des asymptotes horizontales (si le degré de PP est égal à celui de QQ).
  • Modéliser des singularités/pôles (là où le dénominateur Q(x)=0Q(x) = 0).

En pratique, pour un même nombre de coefficients calculés, l'approximant de Padé fournit souvent une précision bien plus élevée et une zone de validité plus large que la série de Taylor.

Exemple : La fonction tan(x)

La série de Taylor de la tangente diverge brutalement à l'approche de π/2\pi/2. Un approximant de Padé, lui, peut placer un zéro au dénominateur précisément là où la fonction a une asymptote, "épousant" ainsi la courbe beaucoup plus loin.

pade-tan.jsjavascript
/**
* Exemple d'Approximant de Padé [3/3] pour tan(x)
* Cette formule est beaucoup plus précise que Taylor près de pi/2
*/
function padeTan(x) {
const x2 = x * x;
// Formule simplifiée de Padé pour tan(x)
// Taylor à l'ordre 7 nécessiterait beaucoup plus de calculs pour moins de précision
return (x * (15 - x2)) / (15 - 6 * x2);
}

Applications Pratiques

Les séries de Taylor ne sont pas qu'un exercice mathématique — elles sont partout dans la technologie moderne.

Shaders et Jeux Vidéo

Dans les Shader GPU, les fonctions trigonométriques exactes sont coûteuses. Les développeurs utilisent souvent des approximations de Taylor tronquées pour des calculs ultra-rapides :

fast_sin.glslglsl
// Approximation rapide de sin(x) pour x dans [-π, π]
float fast_sin(float x) {
// Taylor à l'ordre 5 : x - x³/6 + x⁵/120
float x2 = x * x;
float x3 = x2 * x;
float x5 = x3 * x2;
return x - x3 / 6.0 + x5 / 120.0;
}

Physique et Ingénierie

En physique, on utilise constamment l'approximation des petits angles : sin(θ)θ\sin(\theta) \approx \theta pour θ\theta petit. C'est simplement le premier terme de Taylor ! Cette approximation simplifie énormément les équations du Pendule simple, des Oscillateur harmonique, et bien d'autres systèmes.

Implémentation

En pratique, l'implémentation doit être stable numériquement. On évite l'explosion des nombres avec la factorielle en calculant chaque terme à partir du précédent.

optimized-taylor.jsjavascript
// Approche itérative optimisée (évite de recalculer factorielle et puissance à chaque fois)
function optimizedTaylorSin(x, precision = 10) {
let term = x; // Premier terme n=0
let sum = x;
let x2 = x * x;

for (let i = 1; i < precision; i++) {
// Chaque terme se déduit du précédent :
// term_next = term_prev * (-x^2) / ((2n)*(2n+1))
term *= -x2 / ((2 * i) * (2 * i + 1));
sum += term;
}
return sum;
}

Implémentation Générale

Pour une fonction quelconque avec ses dérivées connues :

taylor-general.jsjavascript
// Série de Taylor générale
// derivatives: tableau des dérivées évaluées en a
// a: point d'expansion
// x: point où évaluer
// n: nombre de termes
function taylorGeneral(derivatives, a, x, n) {
let sum = 0;
for (let i = 0; i < n && i < derivatives.length; i++) {
sum += derivatives[i] * Math.pow(x - a, i) / factorial(i);
}
return sum;
}

// Exemple : Taylor de sin(x) autour de a = π/4
const a = Math.PI / 4;
const sinDerivatives = [
Math.sin(a), // f(a)
Math.cos(a), // f'(a)
-Math.sin(a), // f''(a)
-Math.cos(a), // f'''(a)
Math.sin(a), // f''''(a)
// ... le cycle continue
];

const approx = taylorGeneral(sinDerivatives, a, 1.0, 5);

Estimation de l'Erreur

Le Théorème de Taylor nous donne aussi une borne sur l'erreur. Si on tronque la série après nn termes, l'erreur Rn(x)R_n(x) est bornée par :

Rn(x)M(n+1)!xan+1|R_n(x)| \leq \frac{M}{(n+1)!}|x-a|^{n+1}

MM est une borne sur f(n+1)|f^{(n+1)}| dans l'intervalle considéré. Cette formule permet de savoir combien de termes sont nécessaires pour atteindre une précision donnée.

Synthèse : Taylor vs CORDIC vs Padé

Pour conclure, nous pouvons comparer les trois piliers de l'approximation moderne :

MéthodeNature MathématiqueForcePoint Faible
Série de TaylorPolynôme infiniSimplicité théorique, facile à dériver/intégrer.Diverge vite, nécessite beaucoup de multiplications.
CORDICRotation itérativeIdéal pour le matériel sans multiplieur (FPGA, micro-contrôleurs).Approche purement algorithmique, moins "analytique".
PadéFraction rationnellePrécision extrême, gère les asymptotes et les pôles.Plus complexe à dériver et à mettre en œuvre.

Conclusion : La pensée derrière le calcul

Calculer sin(x)\sin(x) n'est jamais un acte trivial pour une machine. C'est une danse entre l'élégance de l'analyse pure (Taylor), l'ingéniosité algorithmique (CORDIC) et l'efficacité structurelle (Padé). Comprendre ces outils, c'est comprendre comment nous avons réussi à dompter l'infini pour le faire tenir dans le processeur d'une simple calculatrice de poche.