2017-03-05 91 views
0

給定x和y數據,我想對樣條擬合數據,並在數值上整合下面的擬合。使用Univariate.Spline,我得到了一個很好的線性擬合log10(y) vs 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)獲得積分的「真」值?

回答

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)