问题描述
我的非线性数据使用最小二乘拟合与公式Asin(wt+phase)exp(-decay*t)
进行近似,同时将omega(w)
保持不变。我尝试了几种方法都没有成功。
下面是我的代码
import numpy as np
from numpy import loadtxt
import lmfit
np.random.seed(2)
x = np.linspace(0,10,101)
decay = 4.5
shift = 0
amp = 0.0015
y = amp * np.sin(x*5+shift) * np.exp(-x*decay)
yn = y + np.random.normal(size=y.size,scale=0.450)
def resid(params,x,ydata):
decay = params['decay'].value
shift = params['shift'].value
amp = params['amp'].value
y_model = amp * np.sin(x*5+shift) * np.exp(-x*decay)
return y_model - ydata
params = lmfit.Parameters()
params.add('shift',0.0,min=-np.pi,max=np.pi)
params.add('amp',0.0015,min=0,max=0.02)
params.add('decay',4.0,max=10.0)
fit = lmfit.minimize(resid,params,args=(x,yn),method='differential_evolution')
print("\n\n# Fit using differential_evolution:")
lmfit.report_fit(fit)
plt.plot(x,y,'ko',lw=2)
plt.plot(x,yn+fit.residual,'b--',lw=2)
plt.legend(['data','leastsq','diffev'],loc='upper left')
plt.show()
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)