主要内容

用刚性模型探索变步长求解器

这个例子展示了傅科摆模型中变步长求解器的行为。金宝app仿真软件®解决者数值ode15sode23,ode23t用作测试用例。用刚性微分方程来解决这个问题。方程的刚度没有确切的定义。一些数值方法在求解刚性方程时是不稳定的,需要非常小的步长才能得到刚性问题的数值稳定解。一个棘手的问题可能有一个快速变化的分量和一个缓慢变化的分量。

福柯摆就是一个棘手问题的例子。钟摆在几秒钟内完成一次摆动(快速变化的分量),而地球在一天内完成一次自转(缓慢变化的分量)。由于地球的轴向旋转,钟摆的振荡面缓慢旋转。你可以读到更多关于福柯摆的物理知识模拟福柯摆

模拟计算了地球表面观察者所看到的摆锤在x-y平面上的位置。然后计算出摆的总能量,并用于评估各种Simulink求解器的性能。金宝app

傅科摆模型

福柯摆由下面所示的耦合微分方程组描述。不考虑摩擦和空气阻力(这大大简化了方程)。在福柯摆中给出了这些方程的完整推导例子

$ $ & # xA; \ ddot {x} = 2 \ω\罪{\λ}\点{y} - \压裂{g} {1} x # xA; $ $

$ $ & # xA; \ ddot {y} = - 2 \ω\罪{\λ}\点{x} - \压裂{g} {1} y # xA; $ $

$$\Omega = \mbox{地球绕地轴旋转的角速度}$$

$$\lambda = \mbox{地理纬度}$$

$$g = \mbox{重力加速度}$$

$$x \mbox{and} y = \mbox{钟摆bob的坐标}$$

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

图1:傅科摆模型用于评估求解器的性能

可变步长求解器

的性能数值ode15sode23,ode23t变步解决者。要阅读有关特定求解器的更多信息,例如数值、类型帮助数值在MATLAB命令窗口中。

图2:Simulink中可用的可变步长求解器的列表金宝app

评估求解器性能

有不同的方法来评估一个求解器的性能。如果一个问题有一个封闭形式的解,你可以比较求解器的结果与预期的理论结果。您还可以监视使用特定求解器模拟模型所花费的时间。

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

总节能

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

这个例子计算了钟摆在每一个时间步的归一化总能量。能量的相对误差等于模拟过程中总能量的变化。理想情况下,能量的相对误差必须为零,因为能量是守恒的。总能量是势能和动能的和。"NormalizeEnergy"块使用下面给出的表达式计算归一化摆能量。

$ $ E = \压裂{v_x ^ 2 + v_y ^ 2} {2} + g L - \√{L ^ 2 - x ^ 2 - y ^ 2}) $ $

$$E_{normalized}(t) = \frac{E(t)}{E(0)}$$

$$E(0) = \mbox{初始总能量}$$

图3:归一化能量对时间

图3显示了计算时的归一化能量与时间的关系图ode23而且ode23t.很明显,在这个特殊的问题上ode23t比准确得多吗ode23.在模拟中使用ode23时,归一化摆能量下降60%以上。能量越低的摆,振幅越小。你可以在图4中看到这种效应,其中由ode23随振荡面旋转而减小。

图4:摆位按计算使用ode23而且ode23t

图4说明了刚性求解器和非刚性求解器之间的区别。每个图显示了一天中钟摆摆动的位置(每15个数据点被绘制为一个蓝点)。黑点表示摆锤的初始位置,黑线表示摆锤的初始振荡平面。红线表示一天后的振荡平面。黄线表示某个中间时间点的振荡平面。请注意,摆的振荡面在一天内不会完成完整的旋转。振荡面旋转的速度取决于地理纬度(详见福柯摆例子).观察到,左图的摆幅减小,而右图的摆幅保持不变。对于相同的相对容差,RelTol = 1 e-5时,刚性求解器得到的结果更准确,但需要更多的执行时间。

图5显示了Simulink求解器更详细的性能研究。金宝app选择了四个求解器来说明相对误差和仿真执行时间是如何作为相对公差的函数而变化的。您可以使用sldemo_solvers_mcode.m脚本用于更广泛的求解器测试。这个脚本从模型生成C代码以加速模拟。请注意,执行脚本可能需要几分钟。

为模型构建RSim可执行文件。耗时:14.764529秒。运行生成的RSim可执行文件。所用时间:238.354458秒。

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

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

结论

模拟的数值结果会因求解器设置的不同而表现不同。这在棘手的问题中是至关重要的。当使用刚性模型时,选择一个求解器,将以最小的价格给出准确的结果。相对公差(变步长求解器)或步长(固定步长求解器)必须足够小,以保证结果在数值上是稳定的。虽然有些求解器比其他求解器更有效,但刚性求解器更适合解决刚性问题。变步长求解器比固定步长求解器更健壮。