问题描述
我想减少来自我的模型的模拟数据与来自实验室的实验数据之间的误差。当我完成这篇文章中建议的解决方案时:enter link description here
我尝试了 scipy.optimize.curve_fit
但是没有得到想要的结果。
我在应用优化之前得到的结果:
我试过的代码:
from scipy.optimize import curve_fit
Vocv = Data.loc[:,'Vocv']
Tt= Data.loc[:,'Tt']
It= Data.loc[:,'It']
X = np.array([Vocv,It,Tt])
def voltage_1(X,a0,a1,a2,a3):
return (X[0]+(a0*X[1])+(a1*X[1])*(1-np.exp(-1/(a1*a3))*X[2]))
g = [2.448e-07,3e-07,0.2,0.2]
g = np.asarray(g)
n2 = len(t)
y2_1 = []
for i in range(n2):
temp = voltage_1((Vocv[i],It[i],Tt[i]),g[0],g[1],g[2],g[3])
if temp is not None:
y2_1.append(temp)
y2_1 = np.asarray(y2_1)
hr2 = Experimental_Voltage
a,cov = curve_fit(voltage_1,X,hr2,p0=g,method='lm')
print(a)
y2 = np.empty(n2)
for i in range(n2):
y2[i] = voltage_1((Vocv[i],a[0],a[1],a[2],a[3])
font = {'size' : 15}
import matplotlib
matplotlib.rc('font',**font)
t2 = Experimental_Time
fig = plt.figure()
plt.plot(t,y2,c='r',marker = 'o')
plt.plot(t2,c='k',marker = '>')
plt.legend(loc = 'best')
优化后的结果如下:
我现在被困住了。任何帮助,将不胜感激。我可以亲自发送的数据样本。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)