在过去的几周里,我一直在努力解决这个问题。我正在为一个研究项目用Python解决一系列的ODEs。(python代码必须模仿前面的MATLAB代码。)
相关部分如下:
def dy (t,y,params):
dy = np.zeros(3)
wL = params[0]
T = params[1]
CH4 = params[2]
k = params[3]
ka = params[4]
H = params[5]
kmt = params[6]
E = params[7]
d = params[8]
y0 = params[9]
# dy[1] = 1500000 - 0 - 9.987338917338950e-11*y[1]*1000000
# - 1.437829040671314e-17*y[1]*9.84e11
dy[1] = E[1]-y[1]*d[1]
- k[1]*y[1]*y0[14]
- k[55]*y[1]*y0[37]
dy[2] = 0 - 0 + 9.987338917338950e-11*y[1]*1000000
- 7.742358922306635e-12*y[2]*0 + 0.7*7.432069505555159e-12*0*1000000
-3.5e-15*(0 + 0)*y[2] - 2* 7e-16*y[2]**2
return dy
适用于:
y = np.zeros(3)
ode15s = ode(dy)
y[1] = 2.46e10
ode15s.set_initial_value(y)
ode15s.set_f_params(params)
ode15s.set_integrator('vode', method = 'bdf')
注释掉的行可以正常工作,但是带有变量而不是变量的未注释等价行不能正常工作。有什么建议吗?你知道吗
如果源代码包含的代码与此完全相同:
然后问题是
dy[1]
被计算为dy[1] = E[1] - y[1]*d[1]
,接下来的两行被(有效地)忽略。它们是有效的python表达式,但它们不是前一行的一部分,并且没有赋值给任何对象,因此将忽略这些值。你知道吗以下任何一项都可以解决该问题:
让它成为一行:
将整个表达式括在括号中:
在要继续的行的末尾使用行继续字符(
\
):相关问题 更多 >
编程相关推荐