微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多变量和 ODE 的 Scipy 曲线拟合

如何解决多变量和 ODE 的 Scipy 曲线拟合

我的情况: 我有两个 ODE,ODE1 的一个变量必须由 ODE2 计算(ODE2 的唯一目的)。现在我尝试为scipy的solve_ivp函数准备一切:

from scipy.integrate import solve_ivp
t0=0.5 #d
te=5 #d
t_step=1000
Bioc_start=10000
s_start=2
a=1.1 
b=100000
c=1   
def model(t,z,a,b,c):
        Ce,Sub = z 
        return [(a*(Sub/(Sub+c))*Ce),-1*(a/b)*(Sub/(Sub+c))*Ce]
    
    
#solve function
sol = solve_ivp(model,(t0,te),(Bioc_start,s_start),args=(a,c),t_eval=np.linspace(t0,te,t_step),method = 'BDF')

#plot
ax1  = plt.subplot()
in1  = ax1.plot(sol.t,sol.y[0],'r--',label = 'Ce')
plt.ylabel('Ce $[unit]$')
plt.ylim(0,140000)
ax2  = ax1.twinx()
in2  = ax2.plot(sol.t,sol.y[1],'g:',label = 'Sub')
plt.ylabel('Sub $[unit]$')
plt.ylim(0.5,2.5)
lns  = in1+in2
labs = [l.get_label() for l in lns]
ax1.legend(lns,labs,loc = 1)
plt.title('Title')
plt.xlim(0.5,5)

现在我有模型的变量 z (Ce,Sub) 的数据,我想将模型拟合到数据中。变量 a、b 和 c 是常数。我尝试遵循本指南:https://kitchingroup.cheme.cmu.edu/blog/2013/02/18/Fitting-a-numerical-ODE-solution-to-data/#disqus_thread 但我失败了,因为我不明白如何将我的模型和变量拟合到这种类型的拟合中,或者这是不可能的。

Ce 和 Sub 的数据和真实数据图:

Ce=[8000,10000,25000,70000,85000,130000]
Sub=[2,1.9,1.7,1.5,1.1,0.6]
ax1  = plt.subplot()
in1  = ax1.plot(Ce,'r.',140000)
ax2  = ax1.twinx()
in2  = ax2.plot(Sub,'g.',5)

抱歉,帖子太长,如果需要其他信息,请告诉我。非常感谢任何帮助!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。