首页 理论教育直接代数解法中的方程病态问题(Stiffness)的解决方法

直接代数解法中的方程病态问题(Stiffness)的解决方法

【摘要】:但是实际上,在运用直接代数解法时还需解决其带来的一些技术问题与相应的处理。首先是Stiffness问题即病态、刚性、坏条件或具有差别大的Lipsihitz问题。在液压系统特别是元件仿真中,多数场合会遇到病态问题。因此在模块式建模法的直接代数解法中,为了建立稳定的数值计算方法,着眼点是在保证精度的前提下,尽可能扩大稳定区域,使步长选择尽可能大,以达到仿真时间短,巨稳定、可靠、精度足够高的目的。

参考文献[1]可知,本方法经理论论证、不同软件包的仿真结果对比及实例仿真与实验验证三个方面证实,直接代数解法的设想是正确可行的,并巨在建立的PERSIM软件包的实际应用中与已有的液压软件包的计算结果并无二致。但是实际上,在运用直接代数解法时还需解决其带来的一些技术问题与相应的处理。

首先是Stiffness问题即病态、刚性、坏条件或具有差别大的Lipsihitz问题。具体到液压模块式建模法中即为状态变量质量、液容和液感等中存在小参数,就会导致方程组病态:

978-7-111-43021-6-Chapter06-81.jpg

其中e是与其他参数有数量级差别的小参数,会造成方程的Jacobi矩阵具有数量级相差很大的特征值负实部。

在液压系统特别是元件仿真中,多数场合会遇到病态问题。解决病态方程的关键是寻求适应性强的数值解法,寻求稳定域在负方向延续无穷的方法。

本方法研究表明,根据直接代数解法原理及实现途径,对于某些病态系统可直接调用标准的四阶Runge-Kutta法可以得到满意的结果,但有时会要求积分步长很小,造成仿真时间很长。加上还要根据计算精度选择步长,当病态严重时会造成坏解,甚至不收敛。因此在模块式建模法的直接代数解法中,为了建立稳定的数值计算方法,着眼点是在保证精度的前提下,尽可能扩大稳定区域,使步长选择尽可能大,以达到仿真时间短,巨稳定、可靠、精度足够高的目的。为此针对模块式建模法的隐式微分方程组,采用数值迭代公式,构造在m阶显式Runge-Kutta型公式中引人稳定参数sa的数值方法。此时m阶显式Runge-Kutta型公式是:

978-7-111-43021-6-Chapter06-82.jpg

其构造的公式如下:

xs+1=αxs+sxs-1+φ (6-15)

按照s对稳定区域的影响,经研究应选取参数s接近于1原则,这样由于衰减特别快,计算量小,仿真时间短,精度高。但要注意,在具有高频振荡的系统不宜采用此方法,此时的积分步长要有一定限定,这可在软件中考虑到。

经PERSIM软件包仿真的经验证明,对于液压系统与元件的仿真,其步长在10-6为宜。在非病态方程的情况下10-4的步长也能成功,加速仿真使仿真时间极短。