我有一个用未知常数的整数描述的数据集,我正在尝试使用python的curve_fit确定该数据集。但是,被积数包含一个要与数据集相乘的函数
def integrand(tm, Pm, args):
dt, alpha1, alpha2 = args
return Pm*(1-np.e**( -(alpha1 * (tm+dt))) )*np.e**(-(alpha2 * (tm+dt)))
其中Pm是一维收集的脉冲响应数据,脉冲数据图像和积分曲线的一维数组
橙色曲线代表脉冲数据,蓝色曲线代表积分应评估的值
tm是积分的变量,而dt,alpha1,alpha2是未知常数,积分的范围从0到tm。
对这种积分进行曲线拟合的最佳方法是什么,或者可能是解决未知常数的其他方法?
答案 0 :(得分:0)
从数据集的长度来看,似乎目的是要使integrand(t)适应output(t + dt)。 scipy优化模块中有几个功能可用于执行此操作。对于一个简单的示例,我们显示使用scipy.optimize.leastsqr()的实现。有关更多详细信息,请参见scipy optimize
上的教程基本方案是创建一个函数,该函数在独立坐标上评估模型函数,并返回一个numpy数组,其中包含残差,模型与各点观测值之间的差。 minimumsq()可以找到一组参数的值,这些参数可以使残差的平方和最小。
我们需要注意的是,拟合可能会对初始猜测敏感。 模拟退火通常用于查找可能的全局最小值,并在优化拟合之前提供拟合参数的粗略估计。此处用于初始猜测的值仅用于概念目的。
*.js