Lyc ´ee Thiers
TP PYTHON - 06
Deuxième round avec sympy ...
1 - D´eriver,int´egrer et obtenir une limite
Le module sympy comporte une fonction qui permet de dériver une expression suivant une ou
plusieurs variables. Il s’agit de la fonction di. Saisir ce qui suit dans une cellule et l’exécuter :
from sympy import *
var (x)
print(diff(sin (x),x ,2))
var(y)
print(diff(sin (x*y), x, 2, y ,1))
[Qu. 1]
1) En utilisant un script, calculer la dérivée n-ième de x7→ xn1exp 1
xpour n, prenant les valeurs
2, 4 et 5.
2) Conjecturer une formule générale et la démontrer mathématiquement.
Pour calculer une intégrale, le module sympy de Python s’en sort plutôt pas mal. Essayer dans une
deuxième cellule :
print(integrate (x*(1-x), (x ,0,1)))
print(integrate (tan (x)**2, (x ,0,pi /4) )
[Qu. 2]
1) Conjecturer l’expression en fonction de nde Z1
0
x(1 x)ndx lorsque nest un entier naturel, puis
démontrer la mathématiquement.
2) En utilisant un script python, conjecturer une formule pour Z1
0
(ln(t))ndt. Cette intégrale vous
parait-elle singulière ?
Enfin, on peut aussi déterminer certaines limites d’expressions. Voici quelques exemples à saisir dans
une cellule et à exécuter :
TP PYTHON - 06 2
print(limit(x*log(x), x, 0))
print( limit (1/ x -1/ sin (x ), x, 0)) )
print(limit( (x **3+ x**2+1) **(1/3) -(x**2+1) **(1/2) , x, oo ))
[Qu. 3]
1) Soit aet bdeux réels positifs. Déterminer mathématiquement lim
x+x+a
x+bx
et vérifier votre résultat
avec l’aide de Python, ou faites l’inverse si vous préférez.
2) Déterminer l’entier ntel que lim
x0
ln(1 +sin(x)) sin(ln(1 +x))
xnsoit finie et non nulle.
3) Conjecturer la limite, quand n+, de Zn
01ax
nn
dx, suivant les valeurs de a>0. Quelle est
la limite quand n+de Zn
0
exp(ax)dx ? Que remarquez-vous ? Est-ce surprenant ?
2 - quelques trac´es de courbes
sympy peut utiliser le module matplotlib pour créer des figures, mais (au moins pour les quelques
manipulations simples que nous avons en vue) il n’est pas nécessaire de connaître matplotlib pour
comprendre ce qui va suivre (on peut même ignorer jusqu’à son existence).
Mise en garde : à ce jour (décembre 2013), le module sympy est encore en phase de développement. Les
fonctionnalités prévues, relatives au tracé de courbes et surfaces, ne sont pas encore toutes disponibles
ni même pleinement fonctionnelles ...
On suppose que l’on a préalablement saisi les commandes :
>>> from sympy import *
>>> var(’x’)
Pour tracer le graphe de x7→ x2sur [0,1],rien de plus simple :
>>> plot(x**2, (x,0,1))
Pour sauvegarder l’image dans un fichier (remplacer le chemin d’accès par quelque chose d’appro-
prié !) :
>>> img = plot(x**2, (x,0,1))
>>> img.save(’/Users/moi/mes_images/graphique.png’)
On peut ajouter des options (couleur, titre) :
>>> plot(x**2, (x,0,1), line_color = red, title = ’Carré’)
TP PYTHON - 06 3
L’option line_color permet de spécifier une couleur (voir section suivante pour plus de détails sur
ce point). Si un tuple de couleurs est donné plutôt qu’une seule couleur, chaque couleur est utilisée
tour à tour pour donner un tracé en “pointillés colorés” :
>>> plot(sqrt(x), (x,0,1), line_color = (’black’, ’white’), title = ’Racine Carrée’)
[Qu. 4] Construire le graphe de [2,3]R,x7→ p(x2) (3x).Comment pouvait-on prévoir le
résultat observé ?
[Qu. 5] On pose f:−∞,1
4R,x7→ ln 1+4x2+14xe2 sin(x).Tracer le graphe de fsur
1,1
4.Que peut-on penser du signe de f(x)sur cet intervalle ?
3 - trac´e simultan´e de plusieurs graphes
Pour obtenir, dans une même figure, les graphes de x7→ x2et x7→ x1/2sur [0,1]:
>>> plot(x**2, sqrt(x), (x,0,1))
Mais les intervalles de définition ne sont pas nécessairement identiques pour les diérentes fonctions !
Pour obtenir, dans une même figure, le graphe de x7→ x2sur [0,1]et de x7→ x1/2sur [0,2]:
TP PYTHON - 06 4
>>> plot((x**2, (x,0,1)), (sqrt(x), (x,0,2)))
Imaginons maintenant que l’on veuille tracer, sur un même domaine [xMin,xMax],les graphes de
plusieurs fonctions, avec une couleur spécifique pour chaque. Voici une solution :
def multiPlot(xMin, xMax, exprList, colorList):
L = [e for e in exprList] + [(x, xMin, xMax)]
p = plot(*L, show = False)
for i, c in enumerate(p):
c.line_color = colorList[i]
p.show()
Dans la définition ci-dessus, la fonction plot reçoit n+1 arguments, où ndésigne la longueur de la
liste L. Le dernier argument est visiblement une option qui inhibe l’achage.
Le symbole *permet de “dégrouper” (to unpack, en anglais) la liste Lde manière à ce que chacun de
ses termes devienne un argument pour plot.
La fonction plot renvoie un objet pdont la structure précise est un peu compliquée, mais qui consiste
en gros en une séquence de graphiques. La fonction enumerate permet de récupérer, un à un, ces
divers graphiques. On peut alors, sélectivement, modifier la couleur de tracé pour chacun d’eux.
Enfin, la méthode show appliquée à l’objet pdéclenche l’achage.
Les couleurs sont représentées par des triplets [r,g,b] de nombres compris entre 0 et 1. La fonction
grey ci-dessous renvoie donc un triplet représentant un niveau de gris (greylevel en anglais) : lorsque
les trois composantes sont nulles, c’est noir et lorsqu’elles valent toutes 1,c’est blanc.
def grey(level):
return [level for k in range(3)]
On peut aussi utiliser une chaîne de caractères pour spécifier une couleur parmi quelques valeurs
prédéfinies (red,green,blue,yellow,cyan,magenta,black,white).
Voyons un premier exemple :
L = [sin(x), cos(x), sin(2*x), cos(2*x), pi - x]
cols = [’red’, ’green’, ’blue’, ’magenta’, grey(0.5)]
multiPlot(0, pi, L, cols)
[Qu. 6] Tracer, dans un même repère, les graphes des fk:[0,1]R,x7→ xkpour 1 6k610,en
utilisant deux couleurs (une lorsque kest pair, une autre lorsque kest impair).
[Qu. 7] Tracer, dans un même repère, les graphes de x7→ ex,x7→ −exet x7→ exsin (3x)sur [0,10].
Quels sont les coordonnées des points de contact entre ces courbes ?
[Qu. 8] On pose pour tout kN,sk:0,π
2R,t7→ sink(t).Tracer, dans un même repère, les
graphes des s10kpour 1 6k650,en utilisant un dégradé du bleu (pour k=1) au rouge (pour k=50).
Que peut-on alors conjecturer concernant la nature de la suite de terme général Wn=Rπ/2
0sinn(t)dt ?
Démontrer rigoureusement le résultat conjecturé, en essayant de suivre de près ce que suggère la
figure.
[Qu. 9] Modifier la fonction multiPlot pour écrire une fonction multiPlot2(rangeList, exprList,
colorList) qui dessine les graphes de plusieurs fonctions définies sur divers intervalles. La syntaxe,
dans le cas de trois fonctions, sera de la forme :
>>> multiPlot2([[a0, a1], [b0, b1], [c0, c1]], [f, g, h], [colorf, colorg, colorh])
TP PYTHON - 06 5
En déduire une fonction grapheEtTangentes(f, xMin, xMax, n, h) qui dessine :
le graphe de fsur [xMin,xMax]
les tangentes aux points d’abscisses formant une subdivision régulière d’extrémités xMin et xMax et
de longueur n+1,chaque tangente étant représentée par un segment dont les abscisses des extrémités
dièrent de 2h.
4 - sommes partielles dune s ´erie de Taylor
Etant donnée f:RRindéfiniment dérivable, on pose pour tout (x,n)R×N:
Tn(x)=
n
X
k=0
f(k)(0)
k!xk
Tnest appelée le nème polynôme de Taylor de fen 0.On peut démontrer (formule de Taylor avec
reste intégral) que :
f(x)=Tn(x)+Rn(x)avec Rn(x)=Zx
0
(xt)n
n!f(n+1)(t)dt
On peut avoir dans certains cas lim
n→∞Rn(x)=0,mais cela n’a rien d’automatique. Si, pour un certain
r>0,cette condition est remplie pour tout x[r,r], alors on peut écrire :
x[r,r],f(x)=
X
k=0
f(k)(0)
k!xk
On dit alors que fest, sur [r,r],la somme de sa série de Taylor à l’origine.
[Qu. 10] Ecrire une fonction taylorPoly(f, n) qui renvoie l’expression développée du nème poly-
nôme de Taylor de f.Attention ! Pour le matheux, fest une fonction ; tandis que pour le Pythoneux,
fest une expression dépendant du symbole x. On aura donc, par exemple :
>>> taylorPoly(exp(x), 4)
x**4/24 + x**3/6 + x**2/2 + x + 1
[Qu. 11] Ecrire une fonction taylorGraph(f, nList, xMin, xMax) qui dessine simultanément les
graphes sur [xMin,xMax]de fet de ses polynômes de Taylor Tkpour les kprésents dans la liste nList.
On utilisera une couleur (bleu, par exemple) pour le graphe de fet un dégradé (du vert au rouge,
par exemple) pour les Tk.
[Qu. 12] En utilisant la fonction taylorGraph, illustrer les deux cas particuliers suivants :
1) f:x7→ sin (x)sur [π, π]
2) f:x7→ ln 1+2x2sur [1,1].
Que peut-on conjecturer quant à la convergence de la série de Taylor, dans chacun de ces deux cas ?
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !