Как установить первый и последний наклон интерполяции кубического сплайна в scipy.interpolate?

У меня есть набор данных, содержащий n двумерных точек (x0,y0), (x1 ,y1), ... (xn-1,yn-1), где x0 ‹ x1 ‹ ... ‹ xn-1. Я хочу интерполировать этот набор данных, используя кубические сплайны с явными значениями наклона SBEGIN и SEND, установленными в обеих конечных точках (x 0,y0) и (xn-1,yn-1). Я имею в виду, пусть произведенные n-1 кубические функции будут f0(x)=a0x3+b0< /sub>x2+c0x+d0, f1, ..., f< sub>n-2, тогда df0/dx(x0) = SBEGIN, dfn- 2/dx(xn-1) = SEND.

Я просмотрел scipy.interpolate, но не могу найти, как установить SBEGIN и SEND для текущего экземпляра.

import numpy
import scipy

xi = numpy.array([1, 2, 3, 4, ... , 100])
yi = numpy.array([3, 5, 18, 9, ... , 42])
s_begin = 2
s_end = -1

# How can I set s_begin and s_end?
f = scipy.interpolate.interp1d(xi,yi,type='cubic')

Кроме того, я хотел бы знать, как получить 4 (n-1) коэффициенты a0,b0,c0,d< sub>0,a1,...,dn-2 каждого кубического сплайна, которые все должны быть построены в f.


person Izumi Kawashima    schedule 29.06.2015    source источник


Ответы (1)


Это невозможно с interp1d. Вы можете получить коэффициенты сплайна из splrep хотя.

person ev-br    schedule 29.06.2015
comment
И затем вам все еще может понадобиться дополнить набор данных правильно выбранными точками, чтобы установить наклоны в конечных точках. Подходящий означает один раз немного алгебры, чтобы получить уравнения для точек, необходимых для создания определенного наклона через определенную точку. - person Jon Custer; 30.06.2015