In [1]:
%pylab inline
#%pylab
Pour tracer des fonction de type $y = f(x)$ en utilisant ipython, numpy et matplotlib.
Premièrement définir le domaine de $x$ en générant une liste de valeures discrètes. Choisir un pas suffisamment petit pour éviter d'avoir des discontinuités apparentes. La fonction arange de numpy génère facilement des ensemble de valeurs de type ndarray
In [2]:
from numpy import arange
x = arange(-10,10,0.1)
Une fois $x$ définis, il suffit d'établir $y$:
In [4]:
from numpy import exp, abs
y1 = 2.*x -3
y2 = x**2 + 2
y3 = exp(abs(x)/3.)
subplot(1,1,1)
plot(x,y1,label='y1')
plot(x,y2,label='y2')
plot(x,y3,label='y3')
xlabel('X')
ylabel('Y')
legend()
show()
Pour des opérations plus complexe ou ayant des paramètres pouvant varier, il est possible de définir des fonction:
In [5]:
def line_equation(x,m=1.,b=0.):
return m*x+b
y4 = line_equation(x,0.5,3)
Si nécessaire, une fonction peut boucler sur les élément individuel de $x$:
In [6]:
from numpy import ndarray
from random import uniform
def add_noise(x):
y = [uniform(t-0.5,t+0.5) for t in x]
return y
y5 = add_noise(y4)
subplot(1,2,1)
plot(x,y4,label='y4')
xlabel('X')
ylabel('Y')
legend()
subplot(1,2,2)
plot(x,y5,label='y5')
xlabel('X')
ylabel('Y')
legend()
show()
Pour une fonction par partie, on peut utiliser la fonction where pour définir chaque domaine
In [7]:
from numpy import sqrt, where
y6 = where(x<3,x/2.,x**2/6.)
subplot(1,1,1)
plot(x,y6,label='y1')
xlabel('X')
ylabel('Y')
legend()
show()
Pour plus d'information sur le tracé de graphique avec 'python' il est possible de consulter cet excellent notebook
In [ ]: