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
.
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.