2012-06-21 2 views
7

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

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

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

ответ

5

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

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

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

+0

Работает как очарование, спасибо! – ktdrv

Смежные вопросы