为啥 MATLAB 在使用 ode 求解器时会更改矩阵维度?

Posted

技术标签:

【中文标题】为啥 MATLAB 在使用 ode 求解器时会更改矩阵维度?【英文标题】:Why does MATLAB change the matrix dimensions when using an ode solver?为什么 MATLAB 在使用 ode 求解器时会更改矩阵维度? 【发布时间】:2012-11-01 19:42:03 【问题描述】:

我已经为一些运行良好的嵌套 for 循环编写了一些代码。它使用列向量、行向量和 3x2 矩阵的组合,但所有维度都是一致的。现在,当我将这些循环作为微分方程放入并使用ode15s 时,突然间即使对于 t 的单次迭代它也不起作用。它说

"试图访问 MP(2,1);索引超出范围,因为 大小(MP)=[1,6]"

实际上 MP 应该是一个 3x2 矩阵,当然是当我在没有 ode 求解器的情况下测试代码时。有谁知道导致矩阵维度改变的 ode 求解器有什么不同?

任何帮助将不胜感激, 提前致谢!

【问题讨论】:

【参考方案1】:

ode 例程假定向量输入 y0 (1xn) 并给出向量输出 y。在调用ode15s 之后,您可以立即转换回矩阵,例如使用y = reshape(y,[3 2]); 和您的其余代码应该可以工作。

【讨论】:

谢谢你,这很有帮助!这对我了解正在发生的事情很有帮助。

以上是关于为啥 MATLAB 在使用 ode 求解器时会更改矩阵维度?的主要内容,如果未能解决你的问题,请参考以下文章

Matlab求解刚性 ODE

Matlab使用高阶求解器解决天体力学问题

关于matlab的solver求解器

Matlab通过ode求解微分方程

Matlab求解非刚性 ODE

MatLab ode45 最小时间步长