1

我在 SimMechanics 中有一个程序,它使用 6 个衍生块 (du/dt)。进行 10 秒的模拟大约需要 24 小时。有什么办法可以减少 Simulink 导数模块的计算时间?

4

2 回答 2

1

您没有说您的集成时间步长是多少。如果它是毫秒级的,并且您正在模拟 10 秒的总瞬态时间,这意味着 10,000 个时间步长。

时间步长的稳定性限制由您正在模拟的动态系统的特性决定。

它也受您使用的集成方案的影响。众所周知,显式积分在较大的时间步长上存在稳定性问题,因此如果您使用欧拉积分方法,您将被迫使用较小的时间步长。

也许您可以将您的集成方案切换为隐式方法、具有纠错功能的 5 阶 Runge Kutta 或 Burlich-Storer。有关详细信息,请参阅您的文档。

您没有提供有关感兴趣系统的物理特性、模型大小或您的模拟选择的有用信息,所以所有这些都是我有根据的猜测。

于 2009-10-03T22:06:20.503 回答
1

Runge-Kutta 方法(在 Matlab 方言中称为 ODE45 或 ODE23)并不总是适用于机械问题,因为可变时间片设置的最佳性能。移动到固定时间设置并通过评估您可以承认的错误顺序来选择求解器。有关更详细的信息,请参阅 Matlab 文档(以及一些数值分析文本,:-))。

还要考虑您的问题是否需要一些“僵硬”的解决技术。如果处理不当,巨大的常数项可能会导致求解器不稳定。

于 2009-10-03T22:13:22.517 回答