MATLAB 中的 ode 求解器中的质量矩阵是什么?

What is the mass matrix in ode solvers in MATLAB?

在不使用质量矩阵的情况下,像 ode45 这样的 ode 求解器可以求解 y'=f(t,y)。

但是对于涉及 "mass" 矩阵 M(t,y)y'=f(t,y) 的问题,ode 求解器中有一个质量矩阵选项。

"mass" 矩阵到底是什么?这一项是否来自mass-spring系统振荡的质量?我在文档中找不到关于此的示例代码。另外,我似乎可以在 y'=f(t,y) 的等式中对 f(t,y) 中的 t 和 y 的信息进行编码。 M(t,y)y'=f(t,y) 会出现在什么situation/example 需要 M(t,y) 的地方?

这里有完整的解释here in the documentation for odeset。是的,它可能与二阶系统的 mass/inertia 项相关,但它也可以表示具有相同形式的其他系统中的不同参数。此选项在某些情况下可以提高效率并处理奇异(不可逆)质量矩阵(物理系统不常见)。

Shampine 等人的书 Solving ODEs with Matlab (PDF)。提供了更多详细信息和一个很好的示例(第 2.3.2 节,第 105 页)——请参阅 Matlab 中的 batonode

质量矩阵可用于同时求解耦合常微分方程和代数方程。

例如

y'(1) = 2y(1) + 3(y)^2
y'(2) = 5y(1) - 2y(2)^4
0 = y(1)^3 + y(3) + 2
0 = y(2)^4 + y(4) - 8

可以使用质量矩阵为 ode23t 求解:

米=
[1 0 0 0
0 1 0 0
0 0 0 0
0 0 0 0]

请注意,很少有 ode 求解器无法很好地处理奇异质量矩阵。 ode23t 和 ode15s 可以完成这项工作。

更多详情请参考:https://se.mathworks.com/help/matlab/ref/odeset.html#input_argument_namevalue_d119e730030