积分方法和计算步长的选择
用上面的RK系数还可以导出一个3阶的RK公式
h yn1 yn 3k1 9k3 12k4 6
由以上两式确定的误差为
h en yn1 yn1 2k1 9k3 8k4 k5 6
该算法四阶精度,三阶估计误差,因此被称为 RKM34法。 该法的缺点是计算量大,每次需计算5次导函 数,比普通的RK4法多出1/4的计算量。
1 1 T min h T min 20 5 1 1 h 20 c 5 c h tn 40
其中 t n为系统在阶跃函数作用下的过渡过程 c为系统开环频率特性的剪切频率; Tmin 时间; 为系统的最小时间常数。当系统中有多个闭 合回路时,按反应最快的那个闭环系统确定 c 和 Tmin 。 相应的 t n ,
E E min
N
Y
E E max
N
Y
本步积分无效 步长减半
本步积分有效 步长不变
本步积分有效 步长加倍
输出本步积分结果
这种自动改变步长的方法,虽然增加了 局部的计算量,但从总体上考虑往往是合 算的,它较好地解决了计算精度与计算量 之间的矛盾,尤其是系统特征根分布分散 度较大的情况,更是如此。
是误差容许值, 其中 en是 n步的局部截断误差, yn是第 n 步的计算值。 hn 是第 n(Runge-Kutta-Merson) 变步长方法。 Merson的四阶RK公式 h y n 1 y n k 1 4 k 4 k 5 6 k 1 f t n , y n h h k 2 f t n , y n k1 3 3 h h k 3 f t n , y n k 1 k 2 2 6 h h k 4 f t n , y n k 1 3 k 3 2 8 h k 5 f t n h , y n k 1 3 k 3 4 k 4 2
相对误差方法:
rn en yn1 yn1 yn 1
rn 是相对误差;而当 当 yn1 很大时, rn 便成为绝对误差 en 。这样可以 yn 1 很小时, 避免当 y 值很小时而导致 rn 变得过大。
开始 给定初步长和误 差上、下限Emax、Emin
利用Runge-Kutta-Merson 法进行积分运算 估计误差E
变步长的起因:
c , Tmin 有时是很难估 1 高阶仿真系统的 t n , 计的, 有时根本就无法估计上述性能指标。 2 系统中最小时间常数对应的极点只影响到 过渡过程起始段形态,而系统过渡过程主要由 那些靠近虚轴的主导极点所决定。 3 固定步长积分方法的计算步长,是按起始 段来选取的,会造成后面阶段由于使用过小步 长积分而引起计算量增加和时间浪费。
变步长策略: (1) 分段变步长,将过渡过程分成几段,每
段使用不同的步长;
(2) 根据每步积分的误差,自动调整下一步
的积分步长;
(3) 最优步长法,使每一步积分步长在保证
精度的前提下取最大的步长。
3.5.3 误差估计与步长控制
控制误差的办法通常有三种:
en en hn en y n
3.5.积分方法和计算步长的选择
算法和步长的选择考虑以下因素:
方法本身复杂程度 计算量和误差的大小 步长和易调整性 系统本身的刚性程度 稳定性的要求
3.5.1 积分方法的选择
•精度要求
影响数值积分精度的因素:
截断误差:同积分方法、方法阶次、步长大小
等 因素有关
舍入误差:同计算机字长、步长大小、程序编
一般来说,对于系统阶次高、导函数复杂、 精度要求高的复杂仿真问题宜采用Adams预估- 校正法。
• 数值解的稳定性
保证数值解的稳定性是进行数字仿真的先 决条件,否则计算结果将失去实际意义,导致 仿真失败。
刚性(病态系统):对于刚性(病态系统)
问题,选择数值积分方法时,应特别注意稳定 性的要求,并采取相应的处理策略。
码质量等因素有关 初始误差:由初始值准确度确定
实际应用时应视仿真精度要求合理地选 择方法和阶次,并非阶次越高、步长越小 越好。
• 计算速度
计算速度:主要取决于每步积分运算所花费的 时间以及积分的总次数。 每步运算量:同具体的积分方法有关,它主 要取决于导函数的复杂程度以及每步积分应计 h 算导函数的次数。
3.5.2 积分步长的确定
积分步长与误差的关系:
步长太大,会导致较大的截断误差,甚至会 出现数值解的不稳定现象;
步长太小,必增加计算次数,造成舍入误差 的积累,使总误差加大。
系统的特性与步长的关系:
在确定积分方法以后,选择积分步长时,需要考 虑的一个重要的因素就是系统的动态响应特性。 对变化剧烈的快变量,要选择高阶的计算方法, 取较小的步长。 对于一般工程系统的仿真, 确定步长的经验公 式:
积分方法的选择具有较大的灵活性,要结 合实际问题而定。
RK法:当导函数不是十分复杂而且要求精度
不是很高时,RK法是合适的选择;
Adams预估-校正法:如果导函数复杂、计
算量大,则最好采用Adams预估-校正法;
Gear法:对于一些刚性仿真问题来说,Gear
法是一种通用的算法,它既适合正常系统, 又适合严重的病态系统;对于那些实时仿真 问题,则必须采用实时仿真算法。