错误生成如下:UnboundLocalError:赋值之前引用了本地变量'dPsdt'
dL1dt = (m_si*(h1-hf) + pi*di*alphai_1*L1*(Tm1-Ts1) - d13*dPsdt)/d11
dL2dt = (m_si*hf-m_so*hg + pi*di*alphai_2*L2*(Tm2-Ts2)- d21 * dL1dt -d23*dPsdt-
d24*dhodt)/d22
dPsdt = (m_so*(hg-ho) + pi*di*alphai_3*L3*(Tm3-Ts3)-d31*dL1dt-d32*dL2dt -
d34*dhodt)/d33
dhodt = (m_si - m_so -(d41*dL1dt) - (d42*dL2dt) - (d43*dPsdt))/d44
dzdt = [dL1dt, dL2dt, dPsdt, dhodt, dTm1dt, dTm2dt, dTm3dt, dTp1dt, dTp2dt, dTp3dt]
return dzdt
答案 0 :(得分:0)
您的导数似乎是由某个线性系统隐式定义的
A*dxdt = b
您尝试通过Gauss-Seidel迭代解决的。您实际上必须将其实现为迭代,即在方程组上进行多次传递。请注意,您需要像对角线优势那样的收敛条件,这样才能起作用。
但是对于这些小尺寸,您可以通过使用
更快,更精确dxdt = nump.linalg.solve(A,b)