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

时间:2016-06-26 04:37:31

标签: matlab matrix ode numerical-integration

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

但是对于涉及“质量”矩阵的问题,在ode求解器中可以选择质量矩阵,M(t,y)y'= f(t,y)。

“质量”矩阵究竟是什么?这个术语是否来自质量弹簧系统振荡的质量?我在文档中找不到关于此的示例代码。而且,似乎我可以在y'= f(t,y)的等式中对f(t,y)中的t和y进行编码。在什么情况/例子中M(t,y)y'= f(t,y)出现在需要M(t,y)的地方?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

例如

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和质量矩阵解决:

M =
[1 0 0 0
     0 1 0 0
     0 0 0 0
     0 0 0 0]

注意,少数奥德解算器不能很好地处理奇异质量矩阵。 ode23t和ode15s可以完成这项工作。

有关详细信息,请参阅:https://se.mathworks.com/help/matlab/ref/odeset.html#input_argument_namevalue_d119e730030