Informatique Introduction à Scipy Python scientique
>>> poly=np. poly1d([1 ,3, -2,2])
>>> print(poly)
3 2
1x+3x-2x+2
>>> poly2=poly **3-1
>>> print(poly2)
9 8 7 6 5 4 3 2
1 x + 9 x + 21 x - 3 x - 6 x + 66 x - 68 x + 60 x - 24 x + 7
>>> np. roots(poly)
array ([ -3.689 09532+0. j , 0.34 454766+ 0.6507113 4j ,
0.34454766-0.65071134j])
>>> np. roots(poly2)
array ([ -3.71982912+0.05037998 j, -3.7198291 2 -0.05037998 j,
-3.62736508+0.j , 0.49664865+0.72640528j,
0.49664865 -0.72640528 j, 0.22318 047+0.77678525 j,
0.22318047 -0.77678525 j, 0.31368 254+0.42105281 j,
0.31368254-0.42105281j])
Interpolation
La résolution d’une équation diérentielle avec odeint ne renvoie pas une fonction mais seulement un tableau de
valeurs. Cela ne permet donc pas d’obtenir la solution partout. On peut alors créer une fonction par interpolation avec
la fonction interp1d avec la syntaxe interp1d(x,y,kind='type') où xet ysont les tableaux des abscisses et des
ordonnées et t y pe, le type d’interpolation utilisée : ‘linear’, ‘nearest’, ‘zero’, ‘slinear’, ‘quadratic, ‘cubic’.
Un exemple avec x7→ cos(x2)sur [0, 3] :
import numpy as np
import matplotlib. pyplot as plt
import scipy. interpolate
# on discrétise y=cos(x*x) en 7 points sur [0,3]
x=np. linspace(0,3,7)
y=np.cos(x **2)
f1=scipy.interpolate. interp1d(x,y,kind='linear')
f2=scipy.interpolate. interp1d(x,y,kind='cubic ')
f3=scipy.interpolate. interp1d(x,y,kind='quadratic')
X=np. linspace(0,3 ,100) # tracé avec 100 points
plt.plot(x,y,"r o")# points d'interpolation
plt.plot(X,f1(X),label="linéaire")# trois méthodes
plt.plot(X,f2(X),label="cubic")
plt.plot(X,f3(X),label="quadratic")
plt.plot(X,np.cos(X**2),label="cos")
plt.legend (loc="upper center ")
plt.axis ([0 ,3 ,-1.2,1.2])
plt.show ()
Avec en bonus :
5 année 2016/2017