Интерполяция векторных функций с использованием NumPy/SciPy

Есть ли способ интерполировать функцию с векторным значением, используя NumPy/SciPy?

Существует множество предложений, которые работают со скалярными функциями, и я думаю, что могу использовать одно из них для оценки каждого компонента вектора по отдельности, но есть ли способ сделать это более эффективно?

Чтобы уточнить, у меня есть функция f(x) = V, где x — скаляр, а V — вектор. У меня также есть коллекция xs и соответствующих им Vs. Я хотел бы использовать его для интерполяции и оценки V для произвольного x.


person ktdrv    schedule 21.06.2012    source источник


Ответы (1)


Функция интерполяции scipy.interpolate.interp1d также работает с векторными данными для интерполянта (но не с векторными данными аргументов). Таким образом, пока x является скалярным, вы можете использовать его напрямую.

Следующий код является небольшим расширением примера, приведенного в документации 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.        ])

Обратите внимание, что 2 не находится в векторе аргументов x, таким образом, ошибка интерполяции для первого компонента в y в этом примере.

person silvado    schedule 21.06.2012