Vecteur d'une fonction d'interpolation à l'aide de NumPy/SciPy

Existe-t-il un moyen d'interpoler une fonction à valeur vectorielle en utilisant num Py/ SciPy?

il y a beaucoup d'offres qui fonctionnent sur des fonctions à valeur scalaire, et je suppose que je peux utiliser l'une d'elles pour estimer chaque composante du vecteur séparément, mais y a-t-il un moyen de le faire plus efficacement?

pour développer, j'ai une fonction f(x) = V, où x est scalaire et V est un vecteur. J'ai aussi une collection de xs et leur correspondant Vs. Je voudrais l'utiliser pour interpoler et estimation V pour un arbitraire x.

8
demandé sur Peter Mortensen 2012-06-21 04:17:42

1 réponses

La fonction d'interpolation scipy.interpolate.interp1d fonctionne également sur les données vectorielles pour l'interpolant (pas pour les données d'argument vectorielles). Ainsi, tant que x est scalaire, vous pouvez l'utiliser directement.

Le code suivant est une légère extension de l'exemple donné dans la documentation de scipy:

>>> from scipy.interpolate import interp1d
>>> x = np.linspace(0, 10, 10)
>>> y = np.array([np.exp(-x/3.0), 2*x])
>>> f = interp1d(x, y)
>>> f(2)
array([ 0.51950421,  4.        ])
>>> np.array([np.exp(-2/3.0), 2*2])
array([ 0.51341712,  4.        ])

Notez que 2 n'est pas dans l'argument vector x donc l'erreur d'interpolation pour la première composante de y dans cet exemple.

6
répondu silvado 2012-06-21 06:52:30