differential-equations - 如何求解混合微分方程?或者如何在第一次迭代中分配 dPsdt = o 并在迭代后获得值
问题描述
错误生成如下: UnboundLocalError: local variable 'dPsdt' referenced before assignment
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
解决方案
似乎您的导数是由某些线性系统隐式定义的
A*dxdt = b
您尝试通过 Gauss-Seidel 迭代来解决。这必须实际实现为迭代,即多次遍历方程组。请注意,您需要像对角线优势这样的收敛条件,以便完全有效。
但是对于这些小尺寸,您可以通过使用更快、更精确
dxdt = nump.linalg.solve(A,b)
推荐阅读
- r - DiagrammeR 不接受特定的语法符号
- java - 值在分层 ArrayList 中丢失
- android - 使用 https 使用 Android Studio +3.3 检查网络流量
- swift - 无法使用“(String)”类型的参数列表调用“isEqualToString”(来自闭包)
- vb.net - 为什么推断不适用于静态但适用于暗淡?
- java - 生成不重复的随机数数组的函数
- reactjs - 将数组映射到接口对象
- python-3.x - 尝试在 csv 文件中实现 Header 时出错
- python - 抓取完成后运行自定义代码(scrapy)
- angular - 如何访问材料垫选择列表中的选择选项