具有对数刻度的样条曲线

时间:2017-07-07 23:28:43

标签: interpolation spline

让我们说我需要整合由未知函数定义的曲线下的区域。我想使用几种方法,一种样条。 InterpolatedUnivariateSpline非常简单但是当我希望两个轴都是对数刻度时,very strangely有效。 (情节之外的点没有引起令人毛骨悚然的抑郁)我试图

  1. 将我的x和y值重新定义为logarithmic,
  2. 申请InterpolatedUnivariateSpline
  3. 追踪曲线(xn,yn)
  4. 绘制原始数据(x,y)和样条线(xn,yn)
  5. 我仍然无法获得适合数据的曲线,而是一条10个数量级的直线。 (x和y都有len()= 14,它们是小样本。)

    import matplotlib.pyplot as plt
    import numpy as np
    from scipy.interpolate import InterpolatedUnivariateSpline
    
    # x and y read form csv
    x_log = np.log10(x) ; fx_log = np.log10(fx) 
    xn = np.linspace(min(x), max(x), num=1000)
    f = InterpolatedUnivariateSpline(x_log, fx_log, k=3)
    yn = f(xn)
    
    plt.plot(x, y, 'bo', xn, yn, 'r:', ms=3)
    plt.xlabel(r'$\lambda$ ($\AA$)',size='12')
    plt.ylabel(r'$\lambda F_\lambda (W/m^2)$ ',size='12')
    plt.xscale('log')
    plt.yscale('log')
    plt.show()
    

    Outcome here.

    我是否可以重新定义xn和yn以便它们也适合曲线?我试过像xx = np.log10(xn) ; yy = np.log10(yn)这样的东西,也失败了。

0 个答案:

没有答案