为了账号安全,请及时绑定邮箱和手机立即绑定

在两个函数范围内拟合数据

在两个函数范围内拟合数据

子衿沉夜 2021-04-08 10:18:54
根据理论,我有一组数据在两个范围内。上限是:f(x)= 1 / x(x <0.5)下限是:f(x)= 1 + 1 /(2x)(x <0.5)我得到的数据接近这两个界限之一。我试图找到一个描述这些数据的函数。但是,如果我使用普通的拟合方法,则拟合曲线可能在这两个边界之外。如何通过使用scipy.curve_fit强制在这两个边界之间拟合曲线?我正在尝试使用Pade近似值进行拟合,我正在使用的代码如下:def pfuncp_3_1(x, a0, a1, a2, a3, b1):    p1 = ((a0+a1*x+a2*x**2+a3*x**3)*(1+b1*x)**(-1)-1-1/(2*x)<0)*2.0    p2 = ((a0+a1*x+a2*x**2+a3*x**3)*(1+b1*x)**(-1)-1/x>0)*2.0    return (a0+a1*x+a2*x**2+a3*x**3)*(1+b1*x)**(-1) + p1 + p2def ffuncp_3_1(x, a0, a1, a2, a3, b1):    return (a0+a1*x+a2*x**2+a3*x**3)*(1+b1*x)**(-1)def data_fitter(pfunc, ffunc, fit_x, fit_y, new_x):    popt, pcov = opt.curve_fit(pfunc, fit_x, fit_ny)    perr = np.sqrt(np.diag(pcov))    interp_y = np.zeros(len(interp_x))    for k in range(len(interp_x)):        interp_y[k] = ffunc(interp_x[k], *popt)    return interp_yif __name__ == "__main__":    results = data_fitter(pfunc, ffunc, original_x, original_y, interpx)
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号