python - 具有非常量质量矩阵的非线性微分方程的解

标签 python julia differential-equations numerical-analysis

如果我有一个非线性常微分方程组 M(t,y) y' = F(t,y),当我的质量矩阵 M 有时是奇异的时,最佳求解方法是什么?

我正在使用以下方程组:

System of equations

如果 t=0,这会简化为微分代数方程。然而,即使我们限制 t>0,只要 y4=0,这就会变成微分代数方程,我无法设置域限制来避免这种情况(并且是我尝试建模的系统的组成部分)。我之前唯一一次接触 DAE 是当整行为 0 时——但在这种情况下,我的质量矩阵并不总是奇异的。

以数字方式实现此目的的最佳方法是什么? 到目前为止,我已经尝试使用Python,在 M 的主对角线上添加一个小数字(0.0001)并将其反转,求解方程 y' = M^{-1}(t,y) F(t,y) )。然而,这似乎容易不稳定,而且我不确定这是否是一种普遍适用的正则化方法。

Python 没有任何内置函数来处理质量矩阵,因此我也尝试在 Julia 中进行编码。然而,DifferentialEquations.jl states explicitly “不直接支持非恒定质量矩阵:建议用户通过替换为具有恒定质量矩阵的 DAE 来转换他们的问题。”

我不知道如何实现这一目标。任何关于如何进行这种替代或解决此类问题的更好方法的见解将不胜感激。

最佳答案

以下变换transformation导致常数质量矩阵:

eq system .


需要单独处理y_4 = 0的情况。

关于python - 具有非常量质量矩阵的非线性微分方程的解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66096157/

相关文章:

python - 安装 anaconda 包的特定 BUILD

string - 如何将字符与 Julia 中的 [ 进行比较?

python - 从 Python 脚本执行 Julia 文件

r - R语言能找到一阶微分方程的通解吗?

algorithm - 如何数值测试振荡曲线的稳定性?

python - 在 Pandas 中连接两个 df

python - 在Python中将json文件转换为csv不会返回任何内容?

arrays - 调整向量大小 Julia

python - 在 Python 中求解数值 ODE

python - *args 和 **kwargs 的使用