Interpoler une courbe
La fonction interp1d(x,y, kind=’cubic’) crée une fonction continue à partir de 2 tableaux x et y.
Exemple
Le code ci-dessous montre un exemple, de la puissance de cette fonction.
from scipy.interpolate import interp1d
import numpy as np
import matplotlib.pyplot as plt
![]()
x = np.linspace(-1, 1, 5) # # tableau de 5 points régulièrement espacés entre -1 et 1.
y = (x-1.)*(x-0.5)*(x+0.5) # x et y sont des tableaux numpy
![]()
f = interp1d(x,y, kind='cubic') # création d'une fonction continue à partir des tableaux x et y
![]()
xnew = np.linspace(-1, 1, 100) # tableau de 100 points régulièrement espacés entre -1 et 1.
ynew = f(xnew)
yexact = (xnew-1.)*(xnew-0.5)*(xnew+0.5)
![]()
plt.plot(x,y,'bD', label='les 5 points') # trace les 5 points
plt.plot(xnew ,ynew,'rs', label='interpolé') # trace la fonction interpolée à partir des 100 points
plt.plot(xnew, yexact,'k:', label='exact') # trace la fonction exacte à partir des 100 points
plt.legend()
plt.show()
Utilisation
Soient 2 tableaux : x et y
from scipy.interpolate import interp1d
f = interp1d(x,y, kind='cubic') # création d'une fonction continue à partir des tableaux x et y
xnew = np.linspace(0, 90, 100) # tableau de 100 points régulièrement espacés entre 0 et 90 (les bornes du tableau de x).
ynew = f(xnew)