Interpoler une courbe

Le code ci-dessous montre comme créer une fonction continue à partir d'un tableau de valeur

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, 40) # tableau de 40 points régulièrement espacés entre -1 et 1.

ynew = (xnew-1.)*(xnew-0.5)*(xnew+0.5)

plt.plot(x,y,'bD', label='data = les 5 points') # trace les 5 points

plt.plot(xnew ,f(xnew),'rs', label='interpolé') # trace la fonction interpolée à partir de 40 points

plt.plot(xnew, ynew,'k:', label='exact') # trace la fonction exacte à partir des 40 points

pl.legend()

pl.show()