2017-03-05 7 views
0

xとyのデータが与えられたとき、データにスプラインを当てはめて数値的に以下の適合を積分したいと思います。 Univariate.Splineを使用すると、log10(y)xの線形フィットが得られます。次に、得られたスプラインをUnivariate.Spline.integral(bounds)で積分します。私の問題は、私が半ログ空間で作業しているとすれば、出力をどのように解釈するのか分からないことです。semi-log空間におけるスプライン関数の数値積分

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)