Dérivation#

Le calcul différentiel est le plus puissant instrument de découverte que l’esprit humain ait jamais créé.

Joseph-Louis Lagrange

La dérivation formalise la notion de taux de variation instantané. C’est l’outil central de l’analyse réelle : elle permet d’étudier les variations des fonctions, de caractériser les extrema, et de développer les fonctions en séries entières via les formules de Taylor.

Hide code cell source

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import math

sns.set_theme(style="whitegrid", palette="muted", font_scale=1.1)

Nombre dérivé#

Définition 93 (Dérivabilité en un point)

Soit \(f : I \to \mathbb{R}\) et \(a \in I\). \(f\) est dérivable en \(a\) si la limite suivante existe et est finie :

\[f'(a) = \lim_{h \to 0} \frac{f(a + h) - f(a)}{h} = \lim_{x \to a} \frac{f(x) - f(a)}{x - a}.\]

Le réel \(f'(a)\) est le nombre dérivé (ou dérivée) de \(f\) en \(a\).

Remarque 53

Géométriquement, \(\dfrac{f(a+h) - f(a)}{h}\) est la pente de la sécante passant par \((a, f(a))\) et \((a+h, f(a+h))\). Le nombre dérivé \(f'(a)\) est la pente de la tangente au graphe de \(f\) en \(a\).

L’équation de cette tangente est \(y = f(a) + f'(a)(x - a)\).

Analytiquement, \(f\) est dérivable en \(a\) si et seulement si il existe \(\ell \in \mathbb{R}\) et une fonction \(\varepsilon\) tels que

\[f(a + h) = f(a) + \ell h + h\,\varepsilon(h), \quad \varepsilon(h) \xrightarrow[h \to 0]{} 0.\]

Autrement dit : \(f(x) = f(a) + f'(a)(x-a) + o(x-a)\) au voisinage de \(a\).

Définition 94 (Dérivées à gauche et à droite)

\[f'_g(a) = \lim_{h \to 0^-} \frac{f(a+h) - f(a)}{h}, \qquad f'_d(a) = \lim_{h \to 0^+} \frac{f(a+h) - f(a)}{h}.\]

\(f\) est dérivable en \(a\) si et seulement si \(f'_g(a)\) et \(f'_d(a)\) existent et sont égales.

Proposition 134 (Dérivabilité implique continuité)

Si \(f\) est dérivable en \(a\), alors \(f\) est continue en \(a\). La réciproque est fausse.

Proof. \(f(x) - f(a) = \dfrac{f(x) - f(a)}{x - a} \cdot (x - a) \xrightarrow[x \to a]{} f'(a) \cdot 0 = 0\).

Contre-exemple pour la réciproque : \(f(x) = |x|\) est continue en 0 mais :

\[\begin{split}\frac{|h|}{h} = \begin{cases} 1 & h > 0 \\ -1 & h < 0 \end{cases}\end{split}\]

Les limites à gauche et à droite diffèrent : \(f'_d(0) = 1 \neq -1 = f'_g(0)\).

Hide code cell source

fig, axes = plt.subplots(3, 1, figsize=(9, 14))

# Sécantes convergeant vers la tangente
ax = axes[0]
a = 1.0
f = lambda x: x**3 - 2*x + 1
f_prime = lambda x: 3*x**2 - 2

x = np.linspace(-0.5, 2.5, 500)
ax.plot(x, f(x), 'b-', lw=2.5, label='$f(x) = x^3 - 2x + 1$')

# Tangente en a
x_tan = np.linspace(a - 1.2, a + 1.2, 100)
ax.plot(x_tan, f(a) + f_prime(a)*(x_tan - a), 'r-', lw=2,
        label=f'Tangente en $a=1$\n(pente $= f\'(1) = {f_prime(a)}$)')

# Sécantes avec h décroissant
colors = plt.cm.Blues(np.linspace(0.4, 0.9, 4))
for h, col in zip([1.0, 0.5, 0.2, 0.05], colors):
    slope_h = (f(a + h) - f(a)) / h
    x_sec = np.linspace(a - 0.3, a + h + 0.3, 50)
    ax.plot(x_sec, f(a) + slope_h*(x_sec - a), color=col, lw=1.2, ls='--',
            alpha=0.8, label=f'$h={h}$, pente${slope_h:.2f}$' if h >= 0.5 else f'$h={h}$')

ax.scatter([a], [f(a)], color='red', s=100, zorder=6)
ax.set_ylim(-1, 3)
ax.set_xlim(-0.5, 2.5)
ax.axhline(0, color='k', lw=0.8)
ax.axvline(0, color='k', lw=0.8)
ax.set_title('Sécantes $\\to$ tangente\nquand $h \\to 0$')
ax.legend(fontsize=8)
ax.set_xlabel('$x$')

# Non-dérivabilité de |x|
ax = axes[1]
x = np.linspace(-2, 2, 500)
ax.plot(x, np.abs(x), 'b-', lw=2.5, label='$f(x) = |x|$')
ax.plot(np.linspace(-1.5, 0, 50), -np.linspace(-1.5, 0, 50), 'r--', lw=2,
        label="Demi-tangente gauche (pente $-1$)")
ax.plot(np.linspace(0, 1.5, 50), np.linspace(0, 1.5, 50), 'g--', lw=2,
        label="Demi-tangente droite (pente $+1$)")
ax.scatter([0], [0], color='red', s=120, zorder=5)
ax.axhline(0, color='k', lw=0.8)
ax.axvline(0, color='k', lw=0.8)
ax.set_title('$|x|$ : continue mais non dérivable en 0\n$f\'_g(0)=-1 \\neq f\'_d(0)=+1$')
ax.legend(fontsize=9)
ax.set_xlabel('$x$')

# Exemples de points de non-dérivabilité
ax = axes[2]
x = np.linspace(-2, 2, 500)

# x^{2/3} : dérivée infinie en 0
f3 = lambda t: np.sign(t) * np.abs(t)**(2/3)
ax.plot(x, np.abs(x)**(2/3), 'b-', lw=2.5, label='$|x|^{2/3}$ : tangente verticale en 0')

# x sin(1/x) : oscillations
eps = 0.01
x_osc = np.linspace(eps, 1.5, 1000)
ax.plot(x_osc, x_osc * np.sin(1/x_osc), 'r-', lw=1.5, alpha=0.8,
        label='$x\\sin(1/x)$ : non dérivable en 0')
ax.scatter([0], [0], color='red', s=80, zorder=5)

ax.axhline(0, color='k', lw=0.8)
ax.axvline(0, color='k', lw=0.8)
ax.set_ylim(-0.5, 1.5)
ax.set_title('Points singuliers\n(tangente verticale, oscillations)')
ax.legend(fontsize=9)
ax.set_xlabel('$x$')

plt.tight_layout()
plt.show()
_images/4891595ad05233b4bf57abd6d3abe5a7a1d42f17fb713d5a0f4f5332b329d278.png

Fonction dérivée#

Définition 95 (Fonction dérivée et classes de régularité)

\(f\) est dérivable sur \(I\) si elle est dérivable en tout point de \(I\). La fonction dérivée \(f' : I \to \mathbb{R}\) est alors \(x \mapsto f'(x)\).

On note :

  • \(\mathcal{C}^0(I)\) : fonctions continues sur \(I\)

  • \(\mathcal{C}^1(I)\) : fonctions dérivables sur \(I\) à dérivée continue

  • \(\mathcal{C}^n(I)\) : fonctions \(n\) fois dérivables à dérivée \(n\)-ième continue

  • \(\mathcal{C}^\infty(I) = \bigcap_{n \geq 0} \mathcal{C}^n(I)\) : fonctions indéfiniment dérivables

On a les inclusions strictes \(\mathcal{C}^\infty \subsetneq \cdots \subsetneq \mathcal{C}^n \subsetneq \cdots \subsetneq \mathcal{C}^1 \subsetneq \mathcal{C}^0\).

Définition 96 (Dérivées successives)

Si \(f'\) est elle-même dérivable, on note \(f'' = (f')'\) la dérivée seconde. Par récurrence, \(f^{(n)} = (f^{(n-1)})'\), avec \(f^{(0)} = f\).

Exemple 53

  • \(f(x) = x^n\) : \(f^{(k)}(x) = \dfrac{n!}{(n-k)!} x^{n-k}\) pour \(k \leq n\), et \(f^{(k)} = 0\) pour \(k > n\).

  • \(f(x) = e^x\) : \(f^{(n)} = e^x\) pour tout \(n\).

  • \(f(x) = \sin x\) : \(f^{(n)}(x) = \sin(x + n\pi/2)\).

Remarque 54

La classe \(\mathcal{C}^1\) est strictement incluse dans celle des fonctions dérivables. En effet, une fonction peut être dérivable partout sans que sa dérivée soit continue. L’exemple classique est :

\[\begin{split}f(x) = \begin{cases} x^2 \sin(1/x) & x \neq 0 \\ 0 & x = 0 \end{cases}\end{split}\]

On vérifie \(f'(0) = 0\) (par définition), mais \(f'(x) = 2x\sin(1/x) - \cos(1/x)\) pour \(x \neq 0\) n’a pas de limite en 0 (à cause du \(\cos(1/x)\)). Donc \(f\) est dérivable mais pas \(\mathcal{C}^1\).

Opérations sur les dérivées#

Proposition 135 (Opérations algébriques)

Soit \(f, g : I \to \mathbb{R}\) dérivables et \(\lambda \in \mathbb{R}\).

  • \((\lambda f)' = \lambda f'\)

  • \((f + g)' = f' + g'\)

  • \((fg)' = f'g + fg'\) (formule du produit, ou règle de Leibniz au rang 1)

  • Si \(g \neq 0\) sur \(I\) : \(\left(\dfrac{f}{g}\right)' = \dfrac{f'g - fg'}{g^2}\)

Proof. Produit :

\[\frac{(fg)(x) - (fg)(a)}{x - a} = \frac{f(x)g(x) - f(a)g(a)}{x - a} = \frac{(f(x)-f(a))g(x) + f(a)(g(x)-g(a))}{x-a}\]
\[\xrightarrow[x \to a]{} f'(a)\cdot g(a) + f(a)\cdot g'(a),\]

en utilisant la continuité de \(g\) en \(a\) (car \(g\) dérivable \(\Rightarrow\) \(g\) continue).

Proposition 136 (Dérivée d’une composée (règle de la chaîne))

Soit \(f : I \to J\) dérivable en \(a\) et \(g : J \to \mathbb{R}\) dérivable en \(f(a)\). Alors \(g \circ f\) est dérivable en \(a\) et

\[(g \circ f)'(a) = g'(f(a)) \cdot f'(a).\]

Proof. On définit \(\varphi(y) = \dfrac{g(y) - g(f(a))}{y - f(a)}\) pour \(y \neq f(a)\) et \(\varphi(f(a)) = g'(f(a))\). Alors \(\varphi\) est continue en \(f(a)\) et \(g(y) - g(f(a)) = \varphi(y)(y-f(a))\) pour tout \(y\).

Ainsi :

\[\frac{(g \circ f)(x) - (g \circ f)(a)}{x - a} = \varphi(f(x)) \cdot \frac{f(x) - f(a)}{x - a} \xrightarrow[x \to a]{} g'(f(a)) \cdot f'(a).\]

Proposition 137 (Dérivée de la réciproque)

Soit \(f : I \to J\) bijective, continue, dérivable en \(a\) avec \(f'(a) \neq 0\). Alors \(f^{-1}\) est dérivable en \(b = f(a)\) et

\[(f^{-1})'(b) = \frac{1}{f'(f^{-1}(b))} = \frac{1}{f'(a)}.\]

Proof. Posons \(g = f^{-1}\). Comme \(f \circ g = \text{id}_J\), en dérivant : \(f'(g(b)) \cdot g'(b) = 1\), d’où \(g'(b) = 1/f'(g(b))\).

(La dérivabilité de \(g\) se déduit de sa continuité — assurée par le théorème de la bijection continue — et de la définition : \(\dfrac{g(y)-g(b)}{y-b} = \dfrac{1}{\frac{f(g(y))-f(g(b))}{g(y)-g(b)}} \to \dfrac{1}{f'(a)}\).)

Exemple 54

  • \((\sqrt{x})' = \dfrac{1}{2\sqrt{x}}\) sur \(]0,+\infty[\) : réciproque de \(x^2\) sur \([0,+\infty[\).

  • \((\arctan x)' = \dfrac{1}{1+x^2}\) : réciproque de \(\tan\) sur \(]-\pi/2, \pi/2[\).

  • \((x^{1/n})' = \dfrac{1}{n} x^{1/n - 1}\) sur \(]0,+\infty[\).

Formule de Leibniz#

Proposition 138 (Formule de Leibniz généralisée)

Soit \(f, g \in \mathcal{C}^n(I)\). Alors \(fg \in \mathcal{C}^n(I)\) et

\[(fg)^{(n)} = \sum_{k=0}^{n} \binom{n}{k} f^{(k)} g^{(n-k)}.\]

Proof. Par récurrence sur \(n\). Initialisation : \(n = 1\) est la formule du produit.

Hérédité : Si la formule est vraie au rang \(n\), on dérive :

\[(fg)^{(n+1)} = \sum_{k=0}^{n} \binom{n}{k} \left(f^{(k+1)} g^{(n-k)} + f^{(k)} g^{(n-k+1)}\right).\]

On réindexe \(j = k+1\) dans la première somme et on regroupe les termes en \(f^{(j)} g^{(n+1-j)}\) :

\[\sum_{j=1}^{n+1} \binom{n}{j-1} f^{(j)} g^{(n+1-j)} + \sum_{j=0}^{n} \binom{n}{j} f^{(j)} g^{(n+1-j)} = \sum_{j=0}^{n+1} \binom{n+1}{j} f^{(j)} g^{(n+1-j)}\]

en utilisant la relation de Pascal \(\binom{n}{j-1} + \binom{n}{j} = \binom{n+1}{j}\) pour les termes intermédiaires.

Exemple 55

Application : \((x^2 e^x)^{(n)} = \sum_{k=0}^{n} \binom{n}{k} (x^2)^{(k)} e^x\). Comme \((x^2)^{(k)} = 0\) pour \(k \geq 3\), on obtient :

\[(x^2 e^x)^{(n)} = \left(x^2 + 2nx + n(n-1)\right) e^x.\]

Théorèmes fondamentaux#

Extrema locaux#

Définition 97 (Extremum local)

\(f\) admet un maximum local en \(a\) s’il existe \(\delta > 0\) tel que \(\forall x \in I\), \(|x-a| < \delta \Rightarrow f(x) \leq f(a)\). Un minimum local se définit de même. Un extremum local est un maximum ou minimum local.

Proposition 139 (Condition nécessaire d’extremum (Fermat))

Si \(f\) est dérivable en \(a \in \mathring{I}\) et admet un extremum local en \(a\), alors \(f'(a) = 0\).

Proof. Supposons \(f\) à maximum local en \(a\). Pour \(h > 0\) assez petit : \(f(a+h) \leq f(a)\), donc \(\dfrac{f(a+h)-f(a)}{h} \leq 0\), d’où \(f'_d(a) \leq 0\). Pour \(h < 0\) : \(\dfrac{f(a+h)-f(a)}{h} \geq 0\), d’où \(f'_g(a) \geq 0\). Puisque \(f\) est dérivable : \(f'(a) = f'_d(a) = f'_g(a)\), donc \(f'(a) = 0\).

Remarque 55

La réciproque est fausse : \(f(x) = x^3\) vérifie \(f'(0) = 0\) mais n’a pas d’extremum en 0. Un point \(a\)\(f'(a) = 0\) est un point stationnaire (ou point critique). Les extrema locaux se trouvent parmi les points stationnaires et les points de non-dérivabilité dans \(\mathring{I}\).

Condition suffisante d’ordre 2 : Si \(f''(a) > 0\) et \(f'(a) = 0\), alors \(f\) admet un minimum local strict en \(a\). Si \(f''(a) < 0\), c’est un maximum local strict. Si \(f''(a) = 0\), le critère est insuffisant.

Proposition 140 (Condition suffisante d’ordre supérieur)

Soit \(f \in \mathcal{C}^n\) au voisinage de \(a\), avec \(f'(a) = f''(a) = \cdots = f^{(n-1)}(a) = 0\) et \(f^{(n)}(a) \neq 0\).

  • Si \(n\) est impair : \(a\) est un point d’inflexion (pas d’extremum).

  • Si \(n\) est pair et \(f^{(n)}(a) > 0\) : minimum local strict.

  • Si \(n\) est pair et \(f^{(n)}(a) < 0\) : maximum local strict.

Théorème de Rolle#

Proposition 141 (Théorème de Rolle)

Soit \(f : [a, b] \to \mathbb{R}\) continue sur \([a, b]\), dérivable sur \(]a, b[\), avec \(f(a) = f(b)\). Il existe \(c \in \:]a, b[\) tel que \(f'(c) = 0\).

Proof. Si \(f\) est constante, \(f' = 0\) partout, et tout \(c\) convient.

Sinon, \(f\) atteint son maximum \(M\) et son minimum \(m\) sur \([a,b]\) (théorème des valeurs extrêmes), avec \(M > m\). Comme \(f(a) = f(b)\), l’un de ces deux extrêmes est atteint en un point intérieur \(c \in \:]a, b[\). Ce point est un extremum local en intérieur, donc \(f'(c) = 0\) par le théorème de Fermat.

Théorème des accroissements finis#

Proposition 142 (Théorème des accroissements finis (TAF))

Soit \(f : [a, b] \to \mathbb{R}\) continue sur \([a, b]\), dérivable sur \(]a, b[\). Il existe \(c \in \:]a, b[\) tel que

\[f(b) - f(a) = f'(c)(b - a).\]

Proof. On applique Rolle à \(\varphi(x) = f(x) - \dfrac{f(b)-f(a)}{b-a}(x-a)\). \(\varphi\) est continue sur \([a,b]\), dérivable sur \(]a,b[\), et \(\varphi(a) = f(a) = \varphi(b)\). Par Rolle, \(\exists c \in \:]a,b[\) avec \(\varphi'(c) = 0\), soit \(f'(c) = \dfrac{f(b)-f(a)}{b-a}\).

Remarque 56

Géométriquement : il existe un point intérieur du graphe où la tangente est parallèle à la corde \(\overline{(a, f(a))(b, f(b))}\).

Proposition 143 (Théorème de Cauchy (TAF généralisé))

Soit \(f, g : [a, b] \to \mathbb{R}\) continues sur \([a,b]\), dérivables sur \(]a,b[\), avec \(g'\) ne s’annulant pas sur \(]a,b[\). Il existe \(c \in \:]a,b[\) tel que

\[\frac{f(b) - f(a)}{g(b) - g(a)} = \frac{f'(c)}{g'(c)}.\]

Proof. Appliquer Rolle à \(\varphi(x) = f(x)(g(b)-g(a)) - g(x)(f(b)-f(a))\).

Remarque 57

Le TAF standard s’obtient en prenant \(g(x) = x\) dans le théorème de Cauchy. Ce dernier est la clé de la preuve rigoureuse de la règle de L’Hôpital.

Inégalité des accroissements finis#

Proposition 144 (Inégalité des accroissements finis)

Si \(f\) est continue sur \([a, b]\), dérivable sur \(]a, b[\), et \(|f'(x)| \leq M\) pour tout \(x \in \:]a, b[\), alors

\[|f(b) - f(a)| \leq M|b - a|.\]

En particulier, toute fonction à dérivée bornée est lipschitzienne.

Proof. Par le TAF : \(|f(b) - f(a)| = |f'(c)| \cdot |b-a| \leq M|b-a|\).

Remarque 58

Cette inégalité est fondamentale en analyse numérique (contrôle de l’erreur), en analyse fonctionnelle, et pour l’étude des suites récurrentes \(u_{n+1} = f(u_n)\) (contraction si \(|f'| \leq k < 1\)).

Hide code cell source

fig, axes = plt.subplots(3, 1, figsize=(9, 14))

# Théorème de Rolle
ax = axes[0]
f = lambda x: (x - 1)*(x - 3)
f_prime = lambda x: 2*x - 4
x = np.linspace(0.3, 3.7, 500)

ax.plot(x, f(x), 'b-', lw=2.5, label='$f(x) = (x-1)(x-3)$')
ax.scatter([1, 3], [0, 0], color='blue', s=100, zorder=5, label='$f(1)=f(3)=0$')

# Point c=2 où f'(c)=0
c = 2
ax.scatter([c], [f(c)], color='red', s=150, zorder=6, marker='*', label=f'$c=2$, $f\'(2)=0$')
x_tan = np.linspace(1.3, 2.7, 50)
ax.plot(x_tan, [f(c)]*50, 'r--', lw=2)  # tangente horizontale

ax.axhline(0, color='k', lw=0.8)
ax.set_title('Théorème de Rolle\n$f(a)=f(b)$ $\\Rightarrow$ $\\exists c$ : $f\'(c)=0$')
ax.legend(fontsize=9)
ax.set_xlabel('$x$')
ax.set_ylim(-2, 2)

# TAF
ax = axes[1]
a_val, b_val = 0.5, 3.0
f2 = lambda x: np.log(x + 1) + 0.3 * x
f2p = lambda x: 1/(x+1) + 0.3
slope_chord = (f2(b_val) - f2(a_val)) / (b_val - a_val)

# Trouver c tel que f'(c) = slope_chord
# f'(c) = 1/(c+1) + 0.3 = slope_chord => c = 1/slope_chord - 0.3) - 1
c2 = 1 / (slope_chord - 0.3) - 1

x = np.linspace(0, 3.5, 500)
ax.plot(x, f2(x), 'b-', lw=2.5, label='$f(x) = \\ln(x+1) + 0.3x$')

# Corde
ax.plot([a_val, b_val], [f2(a_val), f2(b_val)], 'g-', lw=2.5, alpha=0.8, label='Corde $(a,b)$')

# Tangente en c (parallèle à la corde)
x_tan2 = np.linspace(c2 - 0.8, c2 + 0.8, 50)
ax.plot(x_tan2, f2(c2) + slope_chord*(x_tan2 - c2), 'r--', lw=2, label=f'Tangente en $c \\approx {c2:.2f}$')

ax.scatter([a_val, b_val], [f2(a_val), f2(b_val)], color='green', s=80, zorder=5)
ax.scatter([c2], [f2(c2)], color='red', s=120, zorder=6, marker='*')

ax.axhline(0, color='k', lw=0.8)
ax.set_title('TAF : $\\exists c$ tel que\n$f\'(c) = \\frac{f(b)-f(a)}{b-a}$ (tangente $\\parallel$ corde)')
ax.legend(fontsize=9)
ax.set_xlabel('$x$')

# Critère d'extremum d'ordre 2
ax = axes[2]
x = np.linspace(-2, 2, 500)

f3 = x**4 - 2*x**2  # f'=0 en 0, ±1 ; f''(0)<0 (max), f''(±1)>0 (min)
f3p = lambda x: 4*x**3 - 4*x
f3pp = lambda x: 12*x**2 - 4

ax.plot(x, f3, 'b-', lw=2.5, label="$f=x^4-2x^2$")

# Extrema
for xc in [-1, 0, 1]:
    yc = xc**4 - 2*xc**2
    is_max = f3pp(xc) < 0
    ax.scatter([xc], [yc], color='red' if is_max else 'green', s=120, zorder=6,
               marker='v' if is_max else '^')
    ax.annotate(f"$f''({xc})={f3pp(xc):.0f}$\n{'max' if is_max else 'min'}",
                (xc, yc), textcoords='offset points',
                xytext=(10 if xc >= 0 else -50, 10 if not is_max else -30), fontsize=8)

ax.axhline(0, color='k', lw=0.8)
ax.axvline(0, color='k', lw=0.8)
ax.set_title("Critère d'ordre 2 : $f'(a)=0$\n$f''(a)>0$ min, $f''(a)<0$ max")
ax.legend(fontsize=9)
ax.set_xlabel('$x$')

plt.tight_layout()
plt.show()
_images/b452290aded3fa8842d37904be230c8279ee94ee08c6aae6c5eab0487ca50c0c.png

Sens de variation#

Proposition 145 (Caractérisation de la monotonie)

Soit \(f : I \to \mathbb{R}\) continue sur \(I\), dérivable sur \(\mathring{I}\).

  • \(f\) croissante sur \(I\) \(\iff\) \(f' \geq 0\) sur \(\mathring{I}\)

  • \(f\) décroissante sur \(I\) \(\iff\) \(f' \leq 0\) sur \(\mathring{I}\)

  • \(f' > 0\) sur \(\mathring{I}\) \(\Rightarrow\) \(f\) strictement croissante (la réciproque est fausse)

  • \(f\) constante sur \(I\) \(\iff\) \(f' = 0\) sur \(\mathring{I}\)

Proof. \(f\) croissante \(\Rightarrow\) \(f' \geq 0\) : Pour \(h > 0\), \(\dfrac{f(x+h)-f(x)}{h} \geq 0\), donc à la limite \(f'(x) \geq 0\).

\(f' \geq 0\) \(\Rightarrow\) \(f\) croissante : Pour \(a < b\) dans \(I\), le TAF donne \(f(b) - f(a) = f'(c)(b-a) \geq 0\).

Stricte monotonie : Si \(f' > 0\) sur \(\mathring{I}\), le TAF donne \(f(b) - f(a) = f'(c)(b-a) > 0\) pour \(a < b\). La réciproque est fausse : \(x^3\) est strictement croissante avec \(f'(0) = 0\).

Constante : \(f' = 0 \Rightarrow |f(b)-f(a)| \leq 0 \cdot |b-a| = 0\) par l’inégalité des accroissements finis.

Convexité#

Définition 98 (Fonction convexe)

\(f : I \to \mathbb{R}\) est convexe si

\[\forall x, y \in I, \; \forall t \in [0, 1], \quad f(tx + (1-t)y) \leq tf(x) + (1-t)f(y).\]

\(f\) est concave si \(-f\) est convexe.

Proposition 146 (Caractérisations de la convexité)

Soit \(f : I \to \mathbb{R}\) continue.

  1. Pentes croissantes : \(f\) est convexe \(\iff\) pour tous \(x < y < z\) dans \(I\) :

\[\frac{f(y)-f(x)}{y-x} \leq \frac{f(z)-f(x)}{z-x} \leq \frac{f(z)-f(y)}{z-y}.\]
  1. Tangente sous le graphe : Si \(f\) est dérivable, \(f\) est convexe \(\iff\) pour tout \(a \in I\) et tout \(x \in I\) :

\[f(x) \geq f(a) + f'(a)(x-a).\]
  1. Dérivée croissante : Si \(f\) est dérivable : \(f\) convexe \(\iff\) \(f'\) croissante.

  2. Signe de \(f''\) : Si \(f\) est deux fois dérivable : \(f\) convexe \(\iff\) \(f'' \geq 0\).

Proof. Équivalence (3) \(\iff\) (4) : Immédiate par la caractérisation de la monotonie.

Convexe \(\Rightarrow\) \(f'\) croissante (si \(f\) dérivable) : Soient \(a < b\) dans \(I\). Pour \(a < x < b\), la convexité donne (inégalité des pentes) :

\[\frac{f(x)-f(a)}{x-a} \leq \frac{f(b)-f(a)}{b-a} \leq \frac{f(b)-f(x)}{b-x}.\]

En faisant \(x \to a^+\) : \(f'(a) \leq \dfrac{f(b)-f(a)}{b-a}\). En faisant \(x \to b^-\) : \(\dfrac{f(b)-f(a)}{b-a} \leq f'(b)\). Donc \(f'(a) \leq f'(b)\).

\(f'\) croissante \(\Rightarrow\) convexe : Soient \(x < y\), \(t \in [0,1]\), \(c = tx + (1-t)y\). Par le TAF sur \([x,c]\) et \([c,y]\) :

\[f(c) - f(x) = f'(\xi_1)(c-x), \quad f(y)-f(c) = f'(\xi_2)(y-c)\]

avec \(\xi_1 \in ]x,c[\) et \(\xi_2 \in ]c,y[\). Comme \(f'\) croissante et \(\xi_1 < \xi_2\) :

\[\frac{f(c)-f(x)}{c-x} \leq \frac{f(y)-f(c)}{y-c},\]

d’où \(f(c)(y-x) \leq (1-t)f(x)(y-x) + tf(y)(y-x)\), soit \(f(c) \leq tf(x) + (1-t)f(y)\).

Proposition 147 (Inégalité de Jensen)

Soit \(f : I \to \mathbb{R}\) convexe, \(n \geq 1\), \(x_1, \ldots, x_n \in I\) et \(\lambda_1, \ldots, \lambda_n \geq 0\) avec \(\sum \lambda_i = 1\). Alors

\[f\!\left(\sum_{i=1}^n \lambda_i x_i\right) \leq \sum_{i=1}^n \lambda_i f(x_i).\]

Proof. Par récurrence sur \(n\). Le cas \(n=2\) est la définition de la convexité. Pour le passage de \(n\) à \(n+1\), on utilise \(\sum_{i=1}^{n+1} \lambda_i x_i = (1-\lambda_{n+1}) \cdot \frac{\sum_{i=1}^n \lambda_i x_i}{1-\lambda_{n+1}} + \lambda_{n+1} x_{n+1}\) et on applique la convexité, puis l’hypothèse de récurrence.

Exemple 56

Inégalité arithmético-géométrique. Avec \(f = -\ln\) (convexe) et \(\lambda_i = 1/n\) :

\[-\ln\!\left(\frac{x_1 + \cdots + x_n}{n}\right) \leq -\frac{\ln x_1 + \cdots + \ln x_n}{n} = -\ln\!\left((x_1\cdots x_n)^{1/n}\right),\]

soit \(\dfrac{x_1+\cdots+x_n}{n} \geq (x_1 \cdots x_n)^{1/n}\) : la moyenne arithmétique est \(\geq\) la moyenne géométrique.

Définition 99 (Point d’inflexion)

\(a \in \mathring{I}\) est un point d’inflexion de \(f\) si \(f\) change de convexité en \(a\), c’est-à-dire si \(f''\) change de signe en \(a\).

Hide code cell source

fig, axes = plt.subplots(3, 1, figsize=(9, 14))

x = np.linspace(-2.5, 2.5, 500)

# Convexité et inégalité de la tangente
ax = axes[0]
f_c = np.exp(x)

ax.plot(x, f_c, 'b-', lw=2.5, label='$e^x$ (convexe)')

# Tangentes en plusieurs points : toutes SOUS le graphe
for a_pt, col in [(-1.5, 'red'), (0, 'orange'), (1.2, 'purple')]:
    tang = np.exp(a_pt) + np.exp(a_pt)*(x - a_pt)
    ax.plot(x, tang, '--', color=col, lw=1.5, alpha=0.8,
            label=f'Tangente en $a={a_pt}$')
    ax.scatter([a_pt], [np.exp(a_pt)], color=col, s=60, zorder=5)

ax.set_ylim(-1, 8)
ax.axhline(0, color='k', lw=0.8)
ax.set_title('$e^x$ convexe :\ngraphe au-dessus de toute tangente')
ax.legend(fontsize=8)
ax.set_xlabel('$x$')

# Jensen : inégalité AM-GM
ax = axes[1]
# Illustration visuelle de Jensen pour f convexe
f_j = lambda t: t**2  # convexe

x_pts = np.array([-1.5, 0.5, 1.8])
weights = np.array([1/3, 1/3, 1/3])
bar_x = np.dot(weights, x_pts)  # moyenne

ax.plot(x, f_j(x), 'b-', lw=2.5, label='$f(x)=x^2$ (convexe)')

# Points
for xi in x_pts:
    ax.scatter([xi], [f_j(xi)], color='blue', s=80, zorder=5)
    ax.plot([xi, xi], [0, f_j(xi)], 'b:', lw=1)

# Moyenne des images
mean_f = np.dot(weights, f_j(x_pts))
ax.scatter([bar_x], [f_j(bar_x)], color='red', s=120, zorder=6,
           label=f'$f(\\bar{{x}}) = {f_j(bar_x):.2f}$')
ax.scatter([bar_x], [mean_f], color='green', s=120, zorder=6, marker='^',
           label=f'$\\bar{{f(x)}} = {mean_f:.2f}$')
ax.plot([bar_x, bar_x], [f_j(bar_x), mean_f], 'k-', lw=2,
        label=f'Jensen : $f(\\bar{{x}}) \\leq \\bar{{f(x)}}$')

ax.axhline(0, color='k', lw=0.8)
ax.set_ylim(-0.5, 5)
ax.set_xlim(-2.5, 2.5)
ax.set_title('Inégalité de Jensen\n$f(\\sum \\lambda_i x_i) \\leq \\sum \\lambda_i f(x_i)$')
ax.legend(fontsize=8)
ax.set_xlabel('$x$')

# Résumé : Rolle, TAF sur même graphe
ax = axes[2]
# f dont on voit Rolle puis TAF
f_ex = lambda t: np.sin(t) + 0.2*t
f_ex_p = lambda t: np.cos(t) + 0.2

x = np.linspace(0, 2*np.pi, 500)
ax.plot(x, f_ex(x), 'b-', lw=2.5, label='$f(x)$')

# Points a, b
a_r, b_r = 0.5, 2.5
ax.scatter([a_r, b_r], [f_ex(a_r), f_ex(b_r)], color='green', s=100, zorder=5)
ax.plot([a_r, b_r], [f_ex(a_r), f_ex(b_r)], 'g-', lw=2, alpha=0.8, label='Corde (TAF)')

# Pente de la corde
slope_c = (f_ex(b_r) - f_ex(a_r)) / (b_r - a_r)

# Trouver c tel que f'(c) = slope_c
from scipy.optimize import brentq
c_taf = brentq(lambda t: f_ex_p(t) - slope_c, a_r + 0.1, b_r - 0.1)

x_t = np.linspace(c_taf - 0.8, c_taf + 0.8, 50)
ax.plot(x_t, f_ex(c_taf) + slope_c*(x_t - c_taf), 'r--', lw=2, label=f'Tangente en $c$')
ax.scatter([c_taf], [f_ex(c_taf)], color='red', s=120, zorder=6, marker='*')
ax.axhline(0, color='k', lw=0.8)
ax.set_title('TAF : $\\exists c$ tel que\ntangente $\\parallel$ corde')
ax.legend(fontsize=9)
ax.set_xlabel('$x$')

plt.tight_layout()
plt.show()
_images/92523ab1706fe11578432d1ae008945cea09b550e3d5b2e61fe1689c3306dda2.png

Développements limités#

Formule de Taylor–Young#

Proposition 148 (Formule de Taylor–Young)

Soit \(f \in \mathcal{C}^n(I)\) et \(a \in I\). Alors

\[f(x) = \sum_{k=0}^{n} \frac{f^{(k)}(a)}{k!}(x - a)^k + o\!\left((x - a)^n\right) \quad (x \to a).\]

Proof. Par récurrence sur \(n\), en utilisant l’hypothèse de récurrence appliquée à \(f'\) et en intégrant (voir chapitre 15 pour la justification complète de l’intégration des \(o\)).

Voici la preuve directe par le TAF itéré (dit aussi «~Taylor avec reste de Lagrange faible~») : On pose \(R_n(x) = f(x) - \sum_{k=0}^{n} \frac{f^{(k)}(a)}{k!}(x-a)^k\) et on montre \(R_n(x) = o((x-a)^n)\). Appliquons la règle de L’Hôpital \(n\) fois à \(\dfrac{R_n(x)}{(x-a)^n}\) :

\[\frac{R_n^{(n)}(x)}{n!} = \frac{f^{(n)}(x) - f^{(n)}(a)}{n!} \to 0 \quad (x \to a)\]

par continuité de \(f^{(n)}\).

Formule de Taylor avec reste intégral#

Proposition 149 (Formule de Taylor avec reste intégral)

Soit \(f \in \mathcal{C}^{n+1}([a, x])\). Alors

\[f(x) = \sum_{k=0}^{n} \frac{f^{(k)}(a)}{k!}(x-a)^k + \int_a^x \frac{(x-t)^n}{n!} f^{(n+1)}(t) \, dt.\]

Proof. Par récurrence sur \(n\). Pour \(n=0\) : \(f(x) = f(a) + \int_a^x f'(t)\,dt\) (formule de Newton–Leibniz).

Passage de \(n-1\) à \(n\) : On intègre par parties le reste :

\[\int_a^x \frac{(x-t)^{n-1}}{(n-1)!} f^{(n)}(t)\,dt = \left[-\frac{(x-t)^n}{n!} f^{(n)}(t)\right]_a^x + \int_a^x \frac{(x-t)^n}{n!} f^{(n+1)}(t)\,dt\]
\[= \frac{(x-a)^n}{n!} f^{(n)}(a) + \int_a^x \frac{(x-t)^n}{n!} f^{(n+1)}(t)\,dt.\]

On ajoute ce terme au développement d’ordre \(n-1\).

Inégalité de Taylor–Lagrange#

Proposition 150 (Inégalité de Taylor–Lagrange)

Soit \(f \in \mathcal{C}^{n+1}([a, x])\) et \(M = \sup_{t \in [a,x]} |f^{(n+1)}(t)|\). Alors

\[\left|f(x) - \sum_{k=0}^{n} \frac{f^{(k)}(a)}{k!}(x-a)^k\right| \leq M \frac{|x - a|^{n+1}}{(n+1)!}.\]

Proof. Majorer le reste intégral : \(\left|\int_a^x \frac{(x-t)^n}{n!} f^{(n+1)}(t)\,dt\right| \leq M \int_a^x \frac{(x-t)^n}{n!}\,dt = M \frac{(x-a)^{n+1}}{(n+1)!}\).

Développements limités usuels en 0#

Proposition 151 (DL usuels)

\[e^x = \sum_{k=0}^{n} \frac{x^k}{k!} + o(x^n) = 1 + x + \frac{x^2}{2} + \frac{x^3}{6} + \frac{x^4}{24} + \cdots\]
\[\sin x = \sum_{k=0}^{n} \frac{(-1)^k x^{2k+1}}{(2k+1)!} + o(x^{2n+2}) = x - \frac{x^3}{6} + \frac{x^5}{120} - \cdots\]
\[\cos x = \sum_{k=0}^{n} \frac{(-1)^k x^{2k}}{(2k)!} + o(x^{2n+1}) = 1 - \frac{x^2}{2} + \frac{x^4}{24} - \cdots\]
\[\frac{1}{1-x} = \sum_{k=0}^{n} x^k + o(x^n) = 1 + x + x^2 + x^3 + \cdots \quad (|x| < 1)\]
\[\ln(1+x) = \sum_{k=1}^{n} \frac{(-1)^{k+1} x^k}{k} + o(x^n) = x - \frac{x^2}{2} + \frac{x^3}{3} - \cdots \quad (|x| < 1)\]
\[(1+x)^\alpha = \sum_{k=0}^{n} \binom{\alpha}{k} x^k + o(x^n) \quad \text{où } \binom{\alpha}{k} = \frac{\alpha(\alpha-1)\cdots(\alpha-k+1)}{k!}\]
\[\arctan x = \sum_{k=0}^{n} \frac{(-1)^k x^{2k+1}}{2k+1} + o(x^{2n+2}) = x - \frac{x^3}{3} + \frac{x^5}{5} - \cdots\]
\[\sinh x = x + \frac{x^3}{6} + \frac{x^5}{120} + \cdots, \qquad \cosh x = 1 + \frac{x^2}{2} + \frac{x^4}{24} + \cdots\]
\[\tanh x = x - \frac{x^3}{3} + \frac{2x^5}{15} - \cdots\]

Remarque 59

Opérations sur les DL. Si \(f(x) = P_n(x) + o(x^n)\) et \(g(x) = Q_n(x) + o(x^n)\) :

  • Somme : \((f+g)(x) = P_n(x) + Q_n(x) + o(x^n)\)

  • Produit : \((fg)(x) = (P_n Q_n)(x) \bmod x^{n+1} + o(x^n)\)

  • Composition : si \(f(0) = 0\), \((g \circ f)(x)\) s’obtient en substituant \(P_n(x)\) dans \(Q_n\) et en tronquant à l’ordre \(n\)

  • Division : par identification des coefficients, ou en multipliant par l’inverse

  • Intégration : \(\int_0^x f(t)\,dt = \int_0^x P_n(t)\,dt + o(x^{n+1})\) (ordre augmente de 1)

  • Dérivation : la dérivation d’un DL donne le DL de \(f'\) à l’ordre \(n-1\) seulement si \(f \in \mathcal{C}^{n+1}\) — à manier avec précaution.

Hide code cell source

fig, axes = plt.subplots(3, 1, figsize=(9, 14))

x = np.linspace(-np.pi, np.pi, 500)

# DL de sin à différents ordres
ax = axes[0]
ax.plot(x, np.sin(x), 'k-', lw=3, label='$\\sin(x)$')

colors = plt.cm.Reds(np.linspace(0.3, 0.9, 4))
for n, col in zip([1, 3, 5, 7], colors):
    # DL de sin à l'ordre n
    dl = sum((-1)**k * x**(2*k+1) / math.factorial(2*k+1) for k in range((n+1)//2))
    ax.plot(x, dl, '--', color=col, lw=1.8, label=f'$P_{{{n}}}(x)$ (ordre {n})')

ax.set_ylim(-2, 2)
ax.axhline(0, color='k', lw=0.8)
ax.axvline(0, color='k', lw=0.8)
ax.set_xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi])
ax.set_xticklabels(['$-\\pi$','$-\\pi/2$','0','$\\pi/2$','$\\pi$'])
ax.set_title('DL de $\\sin(x)$ en 0\nconvergence vers la fonction')
ax.legend(fontsize=9)
ax.set_xlabel('$x$')

# DL de exp
ax = axes[1]
x2 = np.linspace(-2, 2, 400)
ax.plot(x2, np.exp(x2), 'k-', lw=3, label='$e^x$')

colors2 = plt.cm.Blues(np.linspace(0.3, 0.9, 5))
for n, col in zip([1, 2, 3, 4, 6], colors2):
    dl_e = sum(x2**k / math.factorial(k) for k in range(n+1))
    ax.plot(x2, dl_e, '--', color=col, lw=1.8, label=f'ordre {n}')

ax.set_ylim(-1, 8)
ax.axhline(0, color='k', lw=0.8)
ax.axvline(0, color='k', lw=0.8)
ax.set_title('DL de $e^x$ en 0')
ax.legend(fontsize=9)
ax.set_xlabel('$x$')

# Erreur du DL (inégalité de Taylor-Lagrange)
ax = axes[2]
x3 = np.linspace(0, 2, 300)
exact = np.exp(x3)

for n, col, ls in [(1,'red','-'), (2,'orange','--'), (3,'green',':'), (4,'blue','-.'), (5,'purple','-')]:
    approx = sum(x3**k / math.factorial(k) for k in range(n+1))
    error = np.abs(exact - approx)
    ax.semilogy(x3, error, color=col, lw=2, ls=ls, label=f'Erreur ordre {n}')

    # Borne théorique (Taylor-Lagrange) : e^x * x^{n+1}/(n+1)!
    bound = np.exp(x3) * x3**(n+1) / math.factorial(n+1)
    ax.semilogy(x3, bound, color=col, lw=0.8, ls=ls, alpha=0.4)

ax.set_title('Erreur $|f(x) - P_n(x)|$ (échelle log)\nBornes de Taylor–Lagrange en transparent')
ax.legend(fontsize=8)
ax.set_xlabel('$x$')
ax.set_ylim(1e-10, 10)

plt.tight_layout()
plt.show()
_images/89cd58a3ed2c22bd1661eef29f8807ec3afe598069eb935efdfdb1282cfe6d37.png

Calcul de limites par les DL#

Exemple 57

Les DL permettent de lever systématiquement les formes indéterminées.

Exemple 1 : \(\lim_{x \to 0} \dfrac{e^x - 1 - x}{x^2}\).

\[e^x - 1 - x = \frac{x^2}{2} + \frac{x^3}{6} + o(x^3), \quad \text{donc} \quad \frac{e^x-1-x}{x^2} = \frac{1}{2} + \frac{x}{6} + o(x) \xrightarrow[x\to 0]{} \frac{1}{2}.\]

Exemple 2 : \(\lim_{x \to 0} \dfrac{1 - \cos x}{x^2}\).

\[1 - \cos x = \frac{x^2}{2} - \frac{x^4}{24} + o(x^4), \quad \text{donc} \quad \frac{1-\cos x}{x^2} \to \frac{1}{2}.\]

Exemple 3 : \(\lim_{x \to 0} \dfrac{\ln(1+x) - \sin x}{x^2}\).

\[\ln(1+x) = x - \frac{x^2}{2} + \frac{x^3}{3} - \cdots, \quad \sin x = x - \frac{x^3}{6} + \cdots\]
\[\ln(1+x) - \sin x = -\frac{x^2}{2} + \frac{x^3}{3} + \frac{x^3}{6} + o(x^3) = -\frac{x^2}{2} + \frac{x^3}{2} + o(x^3),\]
\[\frac{\ln(1+x) - \sin x}{x^2} \to -\frac{1}{2}.\]

Exemple 4 : \(\lim_{x \to 0} \left(\dfrac{1}{\sin^2 x} - \dfrac{1}{x^2}\right)\).

\[\sin^2 x = x^2\left(1 - \frac{x^2}{6} + o(x^2)\right)^2 = x^2\left(1 - \frac{x^2}{3} + o(x^2)\right),\]
\[\frac{1}{\sin^2 x} = \frac{1}{x^2} \cdot \frac{1}{1 - x^2/3 + o(x^2)} = \frac{1}{x^2}\left(1 + \frac{x^2}{3} + o(x^2)\right) = \frac{1}{x^2} + \frac{1}{3} + o(1),\]
\[\frac{1}{\sin^2 x} - \frac{1}{x^2} \to \frac{1}{3}.\]

Hide code cell source

fig, axes = plt.subplots(2, 1, figsize=(9, 9))

# Visualisation des 4 limites
x = np.linspace(-1.5, 1.5, 500)
eps = 1e-10

# f1 = (e^x - 1 - x)/x^2 -> 1/2
f1 = np.where(np.abs(x) > eps, (np.exp(x) - 1 - x) / x**2, 0.5)
# f2 = (1 - cos x)/x^2 -> 1/2
f2 = np.where(np.abs(x) > eps, (1 - np.cos(x)) / x**2, 0.5)

axes[0].plot(x, f1, 'b-', lw=2.5, label=r'$\frac{e^x-1-x}{x^2} \to \frac{1}{2}$')
axes[0].plot(x, f2, 'r-', lw=2.5, label=r'$\frac{1-\cos x}{x^2} \to \frac{1}{2}$')
axes[0].axhline(0.5, color='gray', ls='--', lw=1.5, alpha=0.7, label='$y=1/2$')
axes[0].axhline(0, color='k', lw=0.8)
axes[0].axvline(0, color='k', lw=0.8)
axes[0].set_ylim(0, 1)
axes[0].set_title('Formes $0/0$ levées par DL\n(les deux limites valent $1/2$)')
axes[0].legend(fontsize=10)
axes[0].set_xlabel('$x$')

# f3 = (ln(1+x) - sin x)/x^2 -> -1/2
f3 = np.where(np.abs(x) > eps,
              (np.log(1 + np.where(x > -1, x, -0.99)) - np.sin(x)) / x**2,
              -0.5)
x_valid = x[x > -1]
f3_valid = np.where(np.abs(x_valid) > eps,
                    (np.log(1 + x_valid) - np.sin(x_valid)) / x_valid**2,
                    -0.5)

# f4 = 1/sin^2(x) - 1/x^2 -> 1/3
f4 = np.where(np.abs(x) > eps, 1/np.sin(x)**2 - 1/x**2, 1/3)
f4 = np.where(np.abs(np.sin(x)) > 1e-6, f4, np.nan)

axes[1].plot(x_valid, f3_valid, 'b-', lw=2.5, label=r'$\frac{\ln(1+x)-\sin x}{x^2} \to -\frac{1}{2}$')
axes[1].plot(x, f4, 'r-', lw=2.5, label=r'$\frac{1}{\sin^2 x}-\frac{1}{x^2} \to \frac{1}{3}$')
axes[1].axhline(-0.5, color='blue', ls='--', lw=1.5, alpha=0.7)
axes[1].axhline(1/3, color='red', ls='--', lw=1.5, alpha=0.7)
axes[1].axhline(0, color='k', lw=0.8)
axes[1].axvline(0, color='k', lw=0.8)
axes[1].set_ylim(-1, 1)
axes[1].set_title('Autres formes indéterminées levées par DL')
axes[1].legend(fontsize=10)
axes[1].set_xlabel('$x$')

plt.tight_layout()
plt.show()
_images/00918134f0c877aca73780680f32cefdb3b98ecb4af31f5cfc6a17b46eca1340.png