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)