我想用 Matlab 求解一个常微分方程组。我需要这个来解决与机械工程相关的问题。如果是我的机械系统的自由度的数量,那么变量的数量(当然还有方程的数量)是. 我可以轻松地对 ODE 进行数值积分,例如. 我可以说这个问题很棘手,因为 ode45 需要很长时间,而 ode15s 需要几秒钟并给出准确的结果。对于 13 个自由度系统(即 169 个变量),计算速度非常慢,这是因为步长很小,一开始是, 一分钟后变成它变得越来越大,但在某些时候我必须停止计算并且积分还没有达到(而与我很容易从到)。我想知道这是否是我可以预料到的,因为有 169 个变量。在这种情况下我能做什么?我尝试了所有可用的求解器来解决棘手的问题,但并没有更好。
编辑:我知道 6 度系统和 13 自由度系统只是不同的模型,所以我无法进行比较,但从机械的角度来看,更大的系统并没有复杂得多。对于 ODE 的数值解,我非常天真,我预计问题的规模加倍(因此求解 4x 方程)会导致(大约)4x 计算时间。当然不可能这么简单,但我对这两个模型之间的差异感到惊讶。小系统的计算时间是“秒”,而对于大系统来说它已经“永无止境”了!
编辑:我最终发现了我的问题!正如我所说,ODE 与机械工程问题有关。问题是变量代表了实际的物理量,它们有不同的单位和非常不同的数量级!我只是通过适当的标量因子来缩放问题,计算时间显着减少!显然,您必须将解决方案缩放回正确的单位,但这并不是什么大问题。有关更多信息,我推荐这篇论文http://dx.doi.org/10.1137/S0895479803434914