文档

使用Stiff模型探索变步长解算器

此示例显示了福柯摆模型中变步长解算器的行为。Simulink®解算器万博1manbetx数值,ode15s,ode23,ode23t用作测试用例。刚性微分方程被用来解决这个问题。方程的刚度没有精确的定义。某些数值方法在求解刚性方程时是不稳定的,需要非常小的步长才能获得刚性问题的数值稳定解。僵硬的问题可能有快速变化的组件和缓慢变化的组件。

福柯钟摆就是一个僵硬问题的例子。钟摆在几秒钟内完成振荡(快速变化的分量),而地球在一天内完成绕其轴线的旋转(缓慢变化的分量)。由于地球的轴向旋转,摆锤的振荡面缓慢旋转。阅读更多关于福柯钟摆的物理学知识傅科摆的建模

仿真计算了摆锤在地球表面上被观察者观察到的x-y平面的位置。然后计算钟摆的总能量,并用于评估各种Simulink求解器的性能。万博1manbetx

傅科摆模型

傅科摆是由下列耦合微分方程组描述的。没有考虑摩擦和空气阻力(这大大简化了方程)。在傅科摆中给出了这些方程的完整推导实例

图1所示的模型用于求解描述傅科摆的微分方程。类型sldemo_solvers在MATLAB®命令窗口中打开模型。该示例模拟了一个福柯钟摆86400秒。常量和初始条件保存在模型工作空间中。

图1:采用傅科摆模型对求解器性能进行最高评价

变步长解算器

此示例研究数值,ode15s,ode23,ode23t可变步长解算器。阅读有关特定解算器的更多信息,例如数值、类型帮助数值在MATLAB命令窗口中。

图2:Simulink中可用的可变步长解算器列表万博1manbetx

解算器的性能评估

有不同的方法来评估解算器的性能。如果问题具有封闭形式的解决方案,则可以将解算器结果与预期的理论结果进行比较。您还可以监视使用特定解算器模拟模型所需的时间。

不幸的是,傅科摆问题没有精确的理论解决方案。有一个近似的闭合形式解,但是它不能用来评估求解器的性能(见傅科摆)实例).

总能量守恒

此示例通过验证能量守恒定律来评估解算器性能。在无摩擦的环境中,摆锤的总能量必须保持恒定。然而,由于数值精度有限,摆锤的计算能量不会保持恒定。

此示例计算每个时间步的摆锤归一化总能量。能量的相对误差等于整个模拟过程中总能量的变化。理想情况下,能量的相对误差必须为零,因为能量是守恒的。总能量是势能和动能之和。“NormalizeEnergy”块使用下面给出的表达式计算标准化摆锤能量。

图3:标准化能量与时间

图3显示了使用ode23ode23t. 很明显,在这个特殊的问题上ode23t它比ode23.在使用的模拟中ode23时,归一化摆能降低60%以上。能量较低的摆具有较低的振荡振幅。你可以在图4中看到这种效果,其中钟摆的振幅由ode23随着振荡平面的旋转而减小。

图4:使用以下公式计算的摆锤位置:ode23ode23t

图4说明了刚性求解器和非刚性求解器之间的区别。每一幅图都显示了钟摆在一天中的摆动位置(每15个数据点画一个蓝点)。黑点表示摆锤的初始位置,黑线表示摆锤的初始振荡平面。红线表示一天后的振荡面。黄线表示在某个中间时间点的振荡平面。注意,摆的摆动面在一天内不可能完成一次完整的旋转。振荡面旋转的速度取决于地理纬度(参见傅科摆的细节)实例).观察左图的摆幅减小,而右图的摆幅保持不变。对于相同的相对容忍,RelTol = 1 e-5,刚性解算器提供更精确的结果,但需要更多的执行时间。

图5显示了更详细的Simulink求解器性能研究。万博1manbetx选择了四个求解器来说明相对误差和仿真执行时间是如何随相对公差变化的。你可以使用sldemo_solvers_mcode.m用于更广泛的解算器测试的脚本。此脚本从模型生成C代码以加快模拟速度。请注意,执行脚本可能需要几分钟。

图5:各种求解器设置的相对误差和执行时间。AbsTol = ' 1 e '所有的模拟。

注意,在这个例子中,相对公差小于1e-6时,相对误差并没有显著降低。这是一个依赖于特定模型的数值求解器限制。降低求解器的相对公差并不一定能提高精度。您需要估计问题所需的最小精度,并相应地选择求解器以最小化模拟成本。例如,你可能想知道,福柯摆摆动的位置,在几厘米内。没有必要在几微米内计算钟摆的位置,因为你无法精确地测量位置。

结论

根据解算器设置,模拟的数值结果的行为可能会有所不同。在遇到棘手问题时,这一点至关重要。使用刚性模型时,请选择能够以最低价格提供准确结果的解算器。相对公差(可变步长解算器)或步长(固定步长解算器)必须足够小,以使结果在数值上稳定。尽管某些解算器比其他解算器更有效,但刚性解算器更适合解决刚性问题。可变步长解算器比固定步长解算器更健壮。

这个话题有用吗?