Скажем, у меня есть два массива на питоне, и я хочу получить (и фактически использовать) кубическую сплайн-интерполяцию между этими точками. (IE: Я хочу интегрировать функцию). Я бы предпочел способ использовать numpy scipy.Коэффициенты получения кубической сплайна get
Я знаю о scipy.interpolate.interp1d. Однако это только позволяет мне вычисляться точки, для сказать очень просто функция:
Теперь я мог бы сделать что-то просто нравится:
import numpy as np
import scipy.interpolate
import matplotlib.pyplot as plt
y = np.array([0,2,3,4,8,10,12,12,12,10,9,8,7,1,0,0,1,2])
x = np.array(range(len(y)))
xvals = np.linspace(0, len(y)-1, len(y)*100, endpoint = False)
func = scipy.interpolate.interp1d(x, y, kind = "cubic")
yvals = func(xvals)
plt.plot(xvals,yvals)
plt.plot(x,y, "o")
Однако я хотел бы дополнительно обработать этот кубический сплайн (т.е. мне нужно чтобы получить интеграцию) .. для ручного делать вещи, мне нужно, чтобы получить факторы, так:
a_i * x^3 + b_i * x^2 + c_i * x + d_i where i goes from 0 to n/3
(п = число elemetns - это просто определение г-го кубического)
Поэтому я ожидаю список кортежей (или 2d-массива), описывающих все сплайны. - Или способ получить i-й кубик, и действительно, действительно хотел бы получить удобство «x-to-i», чтобы найти, в какой сплайне я сейчас.
(Хотя, конечно, эта последняя проблема - простой поиск первого значения больше, чем ссылка в отсортированном списке - я мог бы сделать это вручную, если понадобится).
Вы можете использовать 'scipy.integrate.quad' для интеграции интерполированной функции. – Dux