2012-06-21 13 views
7

¿Hay alguna forma de interpolar una función con valores vectoriales usando NumPy/SciPy?Interpolación de funciones con valores vectoriales usando NumPy/SciPy

Hay muchas ofertas que funcionan en funciones con valores escalares, y creo que puedo usar una de ellas para estimar cada componente del vector por separado, pero ¿hay alguna forma de hacerlo de manera más eficiente?

Para mayor información, tengo una función f(x) = V, donde x es escalar y V es un vector. También tengo una colección de xs y su correspondiente Vs. Me gustaría usarlo para interpolar y estimar V para un arbitrario x.

Respuesta

5

La función de interpolación scipy.interpolate.interp1d también funciona en datos con valores vectoriales para el interpolador (no para los datos de argumento con valores vectoriales). Por lo tanto, siempre que x sea escalar, puede usarlo directamente.

El código siguiente es una ligera extensión del ejemplo dado en the scipy documentation:

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

Nota que 2 no está en el vector argumento x, por lo tanto el error de interpolación para el primer componente en y en este ejemplo.

+0

¡Funciona como un encanto, gracias! – ktdrv

Cuestiones relacionadas