如何拟合分段函数并使分段点连续且分段函数的一阶导数相等?

时间:2019-01-17 06:24:17

标签: python spline piecewise

当我想使用分段函数来拟合我的数据时,我不知道如何知道拟合函数在断点处是连续的并且其一阶导数是相等的,即平滑分段函数。 / p>

我试图单独拟合数据,但是如图所示,我不知道如何在拟合过程中添加约束。

enter image description here

def func(x, a0, a1,a2):
    return a0+(a1/x)+a2/(x*x)
def highfunc(x1,b0,b1,b2):
    return b0+b1*x1+b2*x1*x1
x=speed_low
y=ddma_low
popt, pcov = curve_fit(func, x, y)
a0=popt[0]
a1=popt[1]
a2=popt[2]
yvals = func(x,a0,a1,a2) #拟合y值
x1=speed_high
y1=ddma_high
popt1, pcov1 = curve_fit(highfunc, x1, y1)
b0=popt1[0]
b1=popt1[1]
b2=popt1[2]
yvals1 = highfunc(x1,b0,b1,b2) #拟合y值
xxxxx=np.hstack((x,x1))
yyyyy=np.hstack((yvals,yvals1))
#########################画图####################################
fig, ax = plt.subplots()
levels=np.linspace(0,3,7)
gci=ax.hist2d(Good_ddma,speed_cygnss,bins=400,cmap="jet",norm=LogNorm())
plot2 = plt.scatter(yvals,x,s=0.8,c='k',label='polyfit values')
plot3 = plt.scatter(yvals1,x1,s=0.8,c='r',label='polyfit values')
plot4 = plt.scatter(eeeeeefffff,windspeed_queue,s=20,c='k',marker='+')

我要拟合的两条线是平滑且连续的,即断点的第一enter code here导数是相等的,但是经过长时间的思考,样条线拟合函数无法工作,因为我的分段函数限制了表情,这个问题困扰了我很多天。

0 个答案:

没有答案