【发布时间】:2021-05-17 07:43:30
【问题描述】:
我正在尝试用 odeint 解决 ODE。
我的代码是这样的
from scipy.integrate import odeint
import numpy as np
import matplotlib.pyplot as plt
K = 35.94143542
S = 10
M = 30.03
Vr = 58
R = 8.3145
T = 293.15
Q = 0.4998
Vp = 0.000022
Mr = 18
Pvap = 518624.013
Cv = (40000/0.000022)*0.001
Cr = (40000/0.000022)*(1-0.001)
tr = 0.333333333
t = np.arange(0,4+1e-2,1e-2)
def Cair(C, t):
if t <= tr:
dCdt = ((K*S*M*Peq)/(Vr*R*T))-(((K*S)/Vr)+Q)*C
else:
dCdt = -(((K*S)/Vr)+Q)*C
return dCdt
Peq = (Cv*Pvap)/(Cv+Cr*(M/Mr))
C = odeint(Cair, 0 , t)
plt.plot(t, C)
def Cvt(c, t):
dcdt = -((K*S*M)/(Vp*R*T))*(Peq-((C*R*T)/M))
return dcdt
s = (K*S*M)/(Vp*R*T)
p = ((K*S*M)/(K*S*R*T+Vr*R*T*Q))*((Cv*Pvap)/(Cv+(Cr*M/Mr)))
q = ((K*S)/Vr)+Q
init = ((s*p*R*T)/M)*(1+(1/q))
c = odeint(Cvt, init, t)
plt.plot(t, c)
我成功求解并绘制了第一个方程和图形(t 的 Cas 函数),但我未能求解第二个方程并绘制图形(c 作为 t 的函数)
怎么做?
【问题讨论】:
-
Cvt中的参数是小写的c,但是在dcdt的公式中,您使用大写的C,此时它是前一个odeint运行的结果,因此是一个数组。 -
那么如何解决呢?
-
通过更正错误并将大写替换为小写
c。 -
我必须使用函数C来解决Cvt。如何正确插入函数 C?
-
请用错误堆栈发布错误。