Interpolation 对数尺度样条
假设我需要积分曲线下的面积,由未知函数定义。我想使用几种方法,一种是样条曲线Interpolation 对数尺度样条,interpolation,spline,Interpolation,Spline,假设我需要积分曲线下的面积,由未知函数定义。我想使用几种方法,一种是样条曲线InterpolateUnivariateSpline非常简单,但当我希望两个轴都是对数刻度时,它就可以工作了。(情节之外的任何一点都没有引起那种令人毛骨悚然的沮丧)我已经试过了 将我的x和y值重新定义为对数 应用插值单变量样条线 追踪曲线(xn,yn) 绘制原始数据(x,y)和样条曲线(xn,yn) 尽管如此,我还是无法得到一条拟合数据的曲线,而是一条距离数据10个数量级的直线。(x和y都有len()=14,它们是小样
InterpolateUnivariateSpline
非常简单,但当我希望两个轴都是对数刻度时,它就可以工作了。(情节之外的任何一点都没有引起那种令人毛骨悚然的沮丧)我已经试过了
插值单变量样条线
xx=np.log10(xn)的东西;相反,yy=np.log10(yn)
也失败得很惨
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()