不使用质量矩阵,像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)的地方?
答案 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