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’affichage.
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’affichage.
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→ e−x,x7→ −e−xet x7→ e−xsin (3x)sur [0,10].
Quels sont les coordonnées des points de contact entre ces courbes ?
[Qu. 8] On pose pour tout k∈N,sk:0,π
2→R,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])