chapitre 9 traces de courbes · 2019. 11. 22. · chapitre 9 - traces de courbes si on ex ecute ce...

7
Chapitre 9 TRAC ´ ES DE COURBES Exemple de trac´ e de courbes sous Python Exemple de trac´ e de surfaces sous Python Table des mati` eres 9 TRAC ´ ES DE COURBES 1 I COMMENT D ´ EFINIR UNE FONCTION « MATH ´ EMATIQUE » ? ................ 2 II TRAC ´ ES DE COURBES EN DIMENSION 2 ............................. 2 II.1 AVANT-PROPOS : L’OP ´ ERATEUR linspace ........................ 2 II.2 TRAC ´ E DE LA COURBE ................................... 3 III TRAC ´ ES DE COURBES EN DIMENSION 3 ............................. 6 1

Upload: others

Post on 22-Jan-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Chapitre 9 TRACES DE COURBES · 2019. 11. 22. · Chapitre 9 - TRACES DE COURBES Si on ex ecute ce programme, on obtient la gure ci-contre. La gure obtenue est satisfaisante mais

Chapitre 9TRACES DE COURBES

Exemple de trace de courbes sous Python Exemple de trace de surfaces sous Python

Table des matieres

9 TRACES DE COURBES 1I COMMENT DEFINIR UNE FONCTION « MATHEMATIQUE » ? . . . . . . . . . . . . . . . . 2II TRACES DE COURBES EN DIMENSION 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

II.1 AVANT-PROPOS : L’OPERATEUR linspace . . . . . . . . . . . . . . . . . . . . . . . . 2II.2 TRACE DE LA COURBE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

III TRACES DE COURBES EN DIMENSION 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1

Page 2: Chapitre 9 TRACES DE COURBES · 2019. 11. 22. · Chapitre 9 - TRACES DE COURBES Si on ex ecute ce programme, on obtient la gure ci-contre. La gure obtenue est satisfaisante mais

Chapitre 9 - TRACES DE COURBES

Dans ce chapitre, on explique comment creer des fonctions « mathematiques » puis comment les tracer.

I COMMENT DEFINIR UNE FONCTION « MATHEMATIQUE » ?

Pour creer une fonction « mathematique », on utilise la syntaxe de fonction informatique propre a Python.Imaginons que l’on souhaite definir la fonction x 7→ x2 − 1 alors on ecrira le code suivant :

def f(x):

return x**2-1

Ce code signifie que la fonction s’appelle f et que pour l’utiliser il faut l’appliquer a une valeur qui jouera lerole de x. Le resultat retourne est x2 − 1.

Si l’on souhaite calculer la valeur de f en 2, il suffit alors d’ecrire f(2).On peut egalement definir des fonctions de plusieurs variables ainsi. La syntaxe est la suivante :

def g(x,y):

return x**2-y**2

Ce code signifie que la fonction s’appelle g et prend en entree deux valeurs qui joueront les roles de x et y. Leresultat retourne est x2 − y2.

Si l’on souhaite calculer la valeur de g en (2,3), il suffit alors d’ecrire g(2,3).

II TRACES DE COURBES EN DIMENSION 2

II.1 AVANT-PROPOS : L’OPERATEUR linspace

Il faut bien comprendre qu’un ordinateur ne comprend pas le concept mathematique abstrait de fonction nide graphe d’une fonction qui contient une infinite de points.

Le trace d’une courbe sur ordinateur via Python (idem pour votre calculatrice) n’est que la representation d’uncertain nombre de points appartenant au graphe de votre fonction et relies par une ligne brisee par defaut.

Python va donc representer graphiquement une liste de n points que vous entrerez sous la forme de listes X,Y :

— ou X est la liste des n abscisses des points,

— et Y est la liste des n ordonnees des points.

Il est donc de votre responsabilite de fournir a Python une liste de valeurs X judicieuse pour representer defacon pertinente la fonction souhaitee..

Par exemple si l’on souhaite representer notre premiere fonction f sur l’intervalle [−2, 2], il faut discretiser(« casser ») l’intervalle [−2, 2] en un nombre suffisant de morceaux pour avoir un nombre suffisant de points.

Ceci ce fait a l’aide de l’operateur linspace dans le package numpy qui est donc a importer avant

chaque trace ! (de toute facon il contient la majorite des fonctions mathematiques utiles).La syntaxe est la suivante :

import numpy as np

def f(x):

return x**2-1

X=np.linspace(-2,2,100) # on casse l’intervalle en 99 morceaux, soit 100 points

Y=f(X) # on definit la liste des Y comme l’image par f de la liste des X

PCSI - Lycee de l’Essouriau 2 2019-2020

Page 3: Chapitre 9 TRACES DE COURBES · 2019. 11. 22. · Chapitre 9 - TRACES DE COURBES Si on ex ecute ce programme, on obtient la gure ci-contre. La gure obtenue est satisfaisante mais

Chapitre 9 - TRACES DE COURBES

II.2 TRACE DE LA COURBE

Si l’on souhaite tracer les fonctions precedentes sur un graphe, il faut importer le sous-module pylab ou

pyplot de la bibliotheque matplotlib , qui sert a tracer des courbes.

Matplotlib est le paquet entier ; pylab est un module en matplotlib qui s’installe a cote de matplotlib ; et matplot-lib.pyplot est un module de matplotlib.

Pyplot fournit l’interface d’etat-machine a la bibliotheque de tracage sous-jacente dans matplotlib. Cela signi-fie que les figures et les axes sont crees implicitement et automatiquement pour obtenir le trace souhaite. Parexemple, l’appel d’un trace a partir de pyplot cree automatiquement la figure et les axes necessaires pour obtenirle trace souhaite. Definir un titre definira alors automatiquement ce titre sur l’object des axes en cours.

Pylab combine la fonctionnalite pyplot (pour le tracage) avec la fonctionnalite numpy (pour les mathematiqueset le travail avec les tableaux) dans un seul espace de nom, rendant cet espace (ou environnement) encore plussemblable a MATLAB.

L’interface pyplot est generalement preferee pour le tracage non interactif (c.-a-d., Les scripts). L’interface py-lab est pratique pour les calculs interactifs et le tracage , car elle minimise la saisie.

Par exemple, si l’on souhaite tracer notre premiere fonction avec pyplot , on codera la chose suivante :

import numpy as np # j’importe les packages utiles

import matplotlib.pyplot as plt

def f(x): # je definis ma fonction

return x**2-1

X=np.linspace(-2,2,100) # je definis ma liste d’abscisses et d’ordonnees

Y=f(X)

plt.plot(X,Y) # je realise le trace ma fonction

plt.show() # j’affiche le trace

On encore si l’on souhaite tracer avec pylab , on codera :

import pylab as pl # j’importe les packages utiles

def f(x): # je definis ma fonction

return x**2-1

X=pl.linspace(-2,2,100) # je definis ma liste d’abscisses et d’ordonnees

Y=f(X)

pl.plot(X,Y) # je realise le trace ma fonction

pl.show() # j’affiche le trace

On peut bien entendu aussi ecrire directement (sans introduire Y) en avant-derniere commande :

pl.plot(X,f(X)) ou plt.plot(X,f(X))

PCSI - Lycee de l’Essouriau 3 2019-2020

Page 4: Chapitre 9 TRACES DE COURBES · 2019. 11. 22. · Chapitre 9 - TRACES DE COURBES Si on ex ecute ce programme, on obtient la gure ci-contre. La gure obtenue est satisfaisante mais

Chapitre 9 - TRACES DE COURBES

Si on execute ce programme, on obtient la figure ci-contre.

La figure obtenue est satisfaisante mais manque de le-gende ainsi que de commentaires. On peut ameliorer lecode de la facon ci-dessous.

On obtient alors la figure en fin de page.

import pylab as pl # j’importe les packages utiles

def f(x): # je definis ma fonction

return x**2-1

X=pl.linspace(-2,2,100) # je definis ma liste d’abscisses et d’ordonnees

pl.plot(X,f(X),color=’purple’,label=’nom de la courbe’) # je realise le trace

# Voici quelques options graphiques possibles

pl.title(’Trace de la fonction x->x^2-1’)

pl.xlabel(’Axe des abscisses’)

pl.ylabel(’Axe des ordonnees’)

pl.text(-0.5,2,’Jolie parabole’)

pl.grid()

pl.axhline(color=’red’)

pl.axvline(color=’green’)

pl.legend(loc=’upper left’)

pl.show() # j’affiche le trace

PCSI - Lycee de l’Essouriau 4 2019-2020

Page 5: Chapitre 9 TRACES DE COURBES · 2019. 11. 22. · Chapitre 9 - TRACES DE COURBES Si on ex ecute ce programme, on obtient la gure ci-contre. La gure obtenue est satisfaisante mais

Chapitre 9 - TRACES DE COURBES

DETAIL DES COMMANDES :

— pylab.title(’...’) ajoute un titre au graphe.

— pylab.xlabel(’...’) ajoute une legende sur l’axe des abscisses.

— pylab.ylabel(’...’) ajoute une legende sur l’axe des ordonnees.

— pylab.axvline(color=’red’) trace l’axe des abscisses en rouge.

— pylab.axhline(color=’green’) trace l’axe des ordonnees en vert.Il est bien sur possible de mettre la couleur que l’on veut a la place de red et green.

— pylab.text(x,y,’...’) ajoute un texte qui s’affiche a partir du point de cordonnees (x,y).

— pylab.grid() ajoute un quadrillage.

— pylab.legend([’...’],loc=’upper left’) affiche une legende en haut a gauche du graphique. On peututiliser la syntaxe lower right pour changer la position de la legende.

— pylab.ylim(ymin,ymax) et pylab.xlim(xmin,xmax) servent a delimiter la fenetre du graphique de xmin

a xmax en abscisse et de ymin a ymax en ordonnee.

ASTUCE : Il l’on souhaite realiser le trace de plusieurs fonctions f1, . . ., fn sur le meme gra-phique c’est tout a faire possible : il suffit d’enchaıner les commandes pylab.plot(X,f1(X)), . . ., py-lab.plot(X,fn(X)) puis de poursuivre par les options graphiques souhaiter et enfin finir par un uniquepylab.show().

Si je realise la trace de ma fonction avec la commande suivante :

pl.plot(X,f(X),’bo’) # je realise le trace ma fonction

Alors le mot cle pl.plot(X,f(X),’bo’) sert a tracer f(X) en fonction de X en couleur bleue avec des ronds.On peut remplacer b par la premiere lettre de la couleur que l’on souhaite et o par : ou - ou _ ou v ou . etc...

Avec l’option ’bo’ Avec l’option ’bv’

Enfin, si vous devez sauvegarder au format image un trace de courbe, enregistrer-la avant de cliquer sur lafenetre d’agrandissement pour une qualite d’image plus optimale.

PCSI - Lycee de l’Essouriau 5 2019-2020

Page 6: Chapitre 9 TRACES DE COURBES · 2019. 11. 22. · Chapitre 9 - TRACES DE COURBES Si on ex ecute ce programme, on obtient la gure ci-contre. La gure obtenue est satisfaisante mais

Chapitre 9 - TRACES DE COURBES

III TRACES DE COURBES EN DIMENSION 3

Dorenavant, il n’est pas necessaire de retenir la syntaxe des traces presentes. Une recherche Google vouspermettra de les retrouver en quelques clics.

Si l’on souhaite tracer la fonction :

g : R2 → R(x, y) 7→ x2 − y2

on codera par exemple le programme suivant :

import pyplab as pl # j’importe les packages utiles

from mpl_toolkits.mplot3d import Axes3D

ax = Axes3D(pl.figure())

X = pl.arange(-1, 1, 0.1)

Y = pl.arange(-1, 1, 0.1)

X, Y = pl.meshgrid(X, Y)

Z = X**2 - Y**2

ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=’hot’)

pl.show()

Si on execute ce programme, on obtient la figure suivante :

PCSI - Lycee de l’Essouriau 6 2019-2020

Page 7: Chapitre 9 TRACES DE COURBES · 2019. 11. 22. · Chapitre 9 - TRACES DE COURBES Si on ex ecute ce programme, on obtient la gure ci-contre. La gure obtenue est satisfaisante mais

Chapitre 9 - TRACES DE COURBES

Autre exemple, si l’on souhaite tracer la fonction :

h : R2 → R(x, y) 7→ sin(

√x2 + y2)

on codera par exemple le programme suivant :

import pyplab as pl # j’importe les packages utiles

from mpl_toolkits.mplot3d import Axes3D

ax = Axes3D(pl.figure())

X = pl.arange(-4, 4, 0.25)

Y = pl.arange(-4, 4, 0.25)

X, Y = pl.meshgrid(X, Y)

Z = pl.sin(pl.sqrt(X**2 + Y**2))

ax.plot_surface(X, Y, Z, rstride=1, cstride=1,cmap=’hot’)

pl.show()

Si on execute ce programme, on obtient la figure suivante :

On remarquera l’importation d’un package supplementaire ainsi que l’emploi de pl.arange()... a la place depl.linspace()... qui ne fonctionne plus ici. (il faut alors preciser ici le pas d’indentation et pas le nombre depoints souhaites)

PCSI - Lycee de l’Essouriau 7 2019-2020