#!/usr/bin/env python
#-*- coding: utf-8 -*-
from sympy import *
init_printing(use_latex='mathjax')
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
Soit la fonction $f : x \mapsto e^x$ à valeurs dans $\mathbb{R}$
On souhaite avoir une idée du comportement de $f$ en $x=0$
La meilleure droite qui approxime le graphe de la fonction $f$ en $x=0$ est la tangente dont l'équation est $y = 1 + x$, c'est à dire que $f(x) - (1 + x)$ est négligeable devant $x$ en $0$
x = np.linspace(-3, 2, 100)
y1 = np.exp(x)
plt.grid()
plt.plot(x, y1)
def droite(x):
return 1+ x
y2 = droite(x)
plt.plot(x, y2)
plt.show()
Peut-on faire mieux ? Pour cela on peut utiliser une fonction polynomiale.
def polynome2(x):
return 1 + x +0.5*x**2
def polynome3(x):
return 1 + x +0.5*x**2 + 1./6*x**3
plt.figure(figsize=(20,6))
plt.figure(1)
plt.subplot(121)
y3 = polynome2(x)
plt.plot(x, y3, 'r--')
plt.plot(x, y1)
plt.grid()
plt.subplot(122)
y3 = polynome3(x)
plt.plot(x, y3, 'r--')
plt.plot(x, y1)
plt.grid()
plt.show()
soit une fonction $g : x \mapsto e^x - (1 + x + \dfrac{1}{2}x^2 + \dfrac{1}{6}x^3)$
x = 0
print (np.exp(x) - polynome3(0))
L’idée est de d'approcher localement une fonction $f$ que l’on ne sait pas calculer (ou difficilement) par un polynôme $P_n$, qui est facilement calculable. $ f(x) = P_n(x) + R_n (x)$
Définition :
$f$ admet un developpement limité (DL) à l'ordre $n$ en $x_0$ s'il existe un polynôme $P_n(x)$ de degré inférieur ou égal à $n$ tel que $f(x) - P_n(x)$ soit négligeable devant $(x-x_0)^n\epsilon(x)$
$$f(x) - P_n(x) = (x-x_0)^{n}\epsilon(x)$$
Le terme $(x-x_0)^n\epsilon(x)$ est souvent abrégé en $o((x-x_0)^n)$
petit o met en avant que le reste est négligeable devant $(x-x_0)^n$
Propriété : unicité d'un DL
Si $f$ admet un développement limité d'ordre $n$ au point $x_0$, alors ce développement limité et unique.
Soit une fonction $f : I\rightarrow\mathbb{R}$, $n$ fois dérivable et la dérivée $n^{\text{ième}}$ continue. Le développement limité de la fonction $f$ à l'ordre $n$ en $x_0$ peut être obtenu avec la formule de Taylor-Young:
$$f(x) = \overbrace{f(x_0) + f'(x_0)(x-x_0) + \frac{f''(x_0)}{2!}(x-x_0)^2 +\dots + \frac{f^{(n)}(x_0)}{n!}(x-x_0)^n}^{P_n(x)} + \overbrace{(x-x_0)^n\epsilon(x)}^{R_n(x)} \quad\quad\text{avec}\quad \lim_{x\rightarrow x_0}\epsilon(x) = 0$$Reprenons l'exemple de la fonction $f: x \mapsto e^x$
Le développement limité de $f$ à l'ordre trois au point $x_0=0$ est donné par :
$$f(x) = 1 + x + \dfrac{x^2}{2} + \dfrac{x^3}{6} + o(x^3)$$Exercices :
Calculer le développement limité des fonctions suivantes :
$f_2 :x \mapsto \dfrac{1}{\sqrt{3-x}}$ , (2, 0)
$f_3 :x \mapsto \tan(x)$ , (2, 0)
Avec la formule de Taylor-Young de la fonction $x \mapsto \sin(x)$ à l'ordre 4 au point $x_0=0$, calculer une approximation de $\sin(0,01)$
from ipywidgets import *
from IPython.display import display
def update(f, n):
x = symbols('x')
p=plot(f, series(f, x, 0, n).subs(O(x**n), 0), (x,-2*pi,2*pi),
ylabel="",
ylim=(-1.1, 1.1),
show=False,
title="DL sin(x) ordre " +str(n-1)+ " en 0 (vert)\n sin(x) (bleu)")
p[0].line_color = 'blue'
p[1].line_color = 'green'
plt.rcParams['figure.figsize'] = 10, 5
p.save("images/dl_slider.png")
p.show()
interact(update, f="sin(x)", n=widgets.IntSlider(min=0,max=10,step=1,value=4))
Tous les développement limités de cette section sont au voisinage de 0. Pour les obtenir, il suffit de calculer les dérivées successives et d’utiliser la formule de Taylor-Young.
Pour toutes les propriétés suivantes tous les développements limités sont au voisinage de 0 et on pose :
Soit $f : I\rightarrow \mathbb{R}$ telle que $\displaystyle f(x) = \sum_{\substack{k=0}}^n a_kx^k + o(x^{n}) = P_n(x) + o(x^{n})$
Soit $g : I\rightarrow \mathbb{R}$ telle que $\displaystyle g(x) = \sum_{\substack{k=0}}^n b_kx^k + o(x^{n}) = Q_n(x) + o(x^{n})$
Propriété
Exemple
$\displaystyle ln\left(\dfrac{1+x}{1-x}\right) = ln(1+x)-ln(1-x) = 2\left(x + \dfrac{x^3}{3} + \dfrac{x^5}{5}+\dots+\dfrac{x^{2n+1}}{2n+1}\right) + o(x^{2n+1})$
Exercices
Calculer le développement limité des fonctions suivantes :
Avec sympy : Le même à l'ordre 5 et toujours en 0
x = symbols('x')
series(ln((1+x)/(1-x)))
Propriété
Exemple : d'un $DL_3(0)$
$\dfrac{e^x}{1-x} = 1 + 2x + \dfrac{5}{2}x^2 + \dfrac{8}{3}x^3 + O(x^4)$
Exercices
Calculer le développement limité des fonctions suivantes :
$f_7(x) = \left(ln(1+x)\right)^2$ , (4,0)
$f_8(x) = \dfrac{1}{x^2+x+1}$ , (3,0)
Avec sympy
x = symbols('x')
series(exp(x)/(1-x), x, 0, 4)
Soit $P(0)=a_0=0$, donc $\displaystyle\lim_{x\rightarrow 0}f(x)=0$, qui permet d'écrire le DL de $g\,\circ\,f$ en $0$ grâce au DL de $g$ en $0$ écrit ci-dessus.
Alors $g\circ f$ admet un $DL_n(0)$ tel que $(g\circ f)(x) = R_n(x) + O(x^{n+1})$, où $R_n$ est le polynôme obtenue en tronquant au degré $n$ le polynôme $Q_n\circ P_n$
Exemples :
Écrire les développements limités des fonctions suivantes à l'origine:
$ \begin{array}{lll} \displaystyle f_9(x) &= (1-\cos(x))(\sin(x)-x) &(8,0)\\ f_{10}(x) &= \dfrac{1}{2}\ln(\cos(\sqrt{x})) &(2, 0)\\ f_{11}(x) &= \ln\left(\dfrac{\sin(x)}{x}\right) &(4, 0) \end{array} $
x = symbols('x')
series((1/x)*log(cos(sqrt(x))), x, 0, 3)