半对数空间中样条函数的数值积分

时间:2017-03-05 15:47:59

标签: python

给定x和y数据,我希望将样条拟合到数据并以数字方式积分以下拟合。使用Univariate.Spline,我得到log10(y)x的良好线性拟合。然后,我使用Univariate.Spline.integral(bounds)集成生成的样条线。我的问题是,我不确定如何解释输出,因为我在半对数空间工作。

    y = np.array([1,10,100,1000])
    x = np.array([15,16,17,18])
    x_vals = np.linspace(0,50,1000)

    plt.scatter(x,np.log10(y))
    s = interpolate.UnivariateSpline(x,np.log10(y))
    plt.plot(x_vals,s(x_vals))

    print(s.integral(15,17))

我应该10^(s.integral(15,17)获取" true"积分值?

1 个答案:

答案 0 :(得分:0)

您可以数值积分插值函数

from scipy import interpolate, integrate

def antilog_s(x):
    return 10.0**s(x)

integrate.quad(antilog_s, 15, 17)
Out[16]: (42.99515370842196, 4.773420959438774e-13)