我要解决这三个ODE。这是我正在使用的代码。
编译时,出现以下错误消息:
TypeError:model()缺少2个必需的位置参数:“ T”和“ t”
我不知道发生了什么事,因为在模型函数中提到了T和t。
有人可以帮我吗?
import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
v0 = 10.0 #L/min, vazão volumétrica de entrada (CSTR)
V = 100.0 #L, volume do reator (CSTR)
k = 0.14*10**(-5) #L/mol.min, constante de velocidade da reação (aprox: independente da temperatura)
Na0 = 500.0 #mol, concentração de A na entrada do reator (CSTR)
DeltaH_r = -5.9*10**(-5) #cal/mol
CpA = 40.0 #cal/mol.K
CpB = 18.0 #cal/mol.K
Tent = 50.0+273.15 #K, temperatura na entrada no reator
def model(Na, Nb, T, t):
dNadt = (Na0 / V) * v0 - (Na / V) * v0 + (- k * (Na / V)**2) * V
dNbdt = -(Nb / V) * v0 + 0.5 * (k * (Na / V)**2) * V
dTempdt = ((-DeltaH_r) * (- k * (Na / V) * V) - Cp_A * V * v0 * (T - Tent)) / (Na * CpA + Nb *CpB)
return [dNadt, dNbdt, dTempdt]
t = np.linspace(0,20)
Chutes = [500.0, 0.1, 300.0] #Chute inicial
Y = odeint(model, Chutes, t)
答案 0 :(得分:0)
我从没使用过它,但是我检查了文档scipy.integrate.odeint中的示例,我认为您必须添加args=(val1, val2)
,并将其值分配给T
和t
< / p>
Y = odeint(model, Chutes, t, args=(val1, val2))
所以最终它将与{p>一起使用model
Na = Chutes
Nb = t
T = val1
t = val2
答案 1 :(得分:0)
我想我得到了答案。
我不确定为什么,但是当我将Na,Nb和T“串联”在一个矢量中(我称为z)时,它就起作用了。
def model(z, t):
Na, Nb, T = z
dNadt = (Na0 / V) * v0 - (z[0] / V) * v0 + (- k * (z[0] / V)) * V
dNbdt = (-z[1] / V) * v0 + 0.5 * (k * (z[0] / V)) * V
dTdt = ((-DeltaH_r) * (-k * (z[0] / V)) * V - CpA * (z[0] / V) * v0 * (z[2] - Tent)) / (z[0] * CpA + z[1] * CpB)
return [dNadt,dNbdt,dTdt]