On se propose d’approximer une fonction par la formule de Taylor
Ça semble être le bon moment d’utiliser autograd
# si nécessaire
# %pip install autograd
import autograd.numpy as np# et on aura besoin aussi de
from math import factorial
%matplotlib ipympl
import matplotlib.pyplot as pltexo v1¶
écrivez une fonction¶
def taylor1(X, derivatives):
"""
X le domaine (sous-entendu, X[0]<0 et X[-1]>0)
derivatives: une liste ou un tableau contenant les dérivées successives de f en 0
i.e. derivatives[n] = f(n)(0) la dérivée n-ième de f en 0
retourne un tableau Y qui est l'approximation de Taylor sur ce domaine pour une fonction
qui aurait ces dérivées-là
"""
# à vous
...testez la¶
avec sinus
# les valeurs de sin et de ses dérivées successives en 0
# pour l'instant on les passe en dur
# (dans la partie suivante on les calculera)
sinus10 = [0, 1, 0, -1, 0, 1, 0, -1, 0, 1]écrivez le code qui plotte le résultat de taylor1 sur le domaine X = - devrait ressembler à ceci:

X = np.linspace(-2*np.pi, 2*np.pi)# votre codeexo v2¶
une fois que la logique d’accumulation est acquise, on va calculer les dérivées successives de la fonction
# en utilisant l'outil qu'on a vu dans la première partie
from autograd import gradécrivez une fonction¶
def taylor2(X, f, n):
"""
X: le domaine
f: la fonction
n: le degré
retourne un tableau Y qui est l'approximation de Taylor sur ce domaine pour cette fonction à ce degré
"""testons la v2¶
avec sinus au degré 10¶
# Y est le sinus de X
# Y2 est l'image de X par l'approximation de Taylor pour sinus au degré 10
Y = np.sin(X)
Y2 = taylor2(X, np.sin, 10)comparez Y2 avec Y en les dessinant sur la même courbe - devrait ressembler à ceci:

# votre coderegardez la coincidence de Y et Y2
quel est le pourcentage du domaine pour lequel l’approximation est valide à 10-3 près ?
rappel
on rappelle que == n’est pas le bon outil pour comparer les flottants
avec cosinus, au degré 0¶
affichez cos et son approximation au degré 0, qui devrait ressembler à ceci:

# à vousavec une fonction custom¶
à vous de compléter cette fonction
def custom(X):
"""
retourne 2 * sin(X) + cos(X/4)
"""
...calculez Y3 l’image de X par custom
et Y4 l’image de X par l’approx. de custom d’ordre 14
comparez Y3 et Y4 comme ci-dessus - devrait avoir cette allure

# votre codesur quel pourcentage du domaine a-t-on coincidence à 10-3 près ?
# votre code