当前位置:文档之家› 数值积分法仿真

数值积分法仿真


y (0) k 1
yk
hf
(tk ,
yk )
yk
1
yk
1 2
h[
f
(t
k
,
y
k
)
f (tk 1 , y (0) k 1 )]
龙格-库塔法的基本原理
在连续系统仿真中,主要的数值计算
工作是求解一阶微分方程:dy
dt
f
(t,
y)
若已知y的初值y0,再按离散化原理,对上
式我们可以写成:y(t ) k1
y(tk)
tk1
tk
f
(t,
y)dt
再对上式的右端函数f(t,y)(为任意非线性函 数)在tk附近展开成泰勒级数,依照展开的 阶次不同我们就构成了不同的龙格-库塔公 式。
二阶龙格—库塔公式,记在tk时刻的状态变量为yk,并 定义两个附加向量型变量 :
yk1 k1 f
yk
h 2
(k1
(tk , yk )
2. 仿真程序流程框图
开始
输入系统阶次、计算步长、 阶跃函数幅值
输入传递函数分子、分母系数
求状态方程系数矩阵 A,B,C
求四阶龙格库塔法各系数 Ki,j
计算状态变量
计算输出值
N
时间到?
Y 输出仿真结果
结束
MATLAB提供了两个常微分方程求解的函数ode23()、ode45(),分别采用了二阶三级的 RKF方法和四阶五级的RKF法,并采用自适应变步长的求解方法,即当解的变化较慢 时采用较大的计算步长,从而使得计算速度很快;当解的变化较快时,步长会自动变 小,从而使计算精度提高。
允许
误差
E k
步长控制
改变下一步 计算步长
误差估计
积分算法
本步 计算
2、误差估计
• 通常采用的方法是设法找到一个比目前使用的 龙格-库塔公式低一阶的R-K公式,将两式计算
结果之差视为误差估计值。
• 例如:现以RKM4-5为计算公式
y k 1
y k
h 6
(k1
4k 4
k
)
5
k1
f
(tk
,
y) k
6.1.2 离散化原理
在数字计算机上对连续系统进行仿真时,首先遇到的问题是,数字 计算机的数值及时间都是离散的(计算精度,指令执行时间), 而被仿真系统的数值和时间是连续的,后者如何用前者来实现?
设系统模型为:y f ( y,u,t) ,其中u(t)为输入变量,y(t)为系统状态变 量 t似=k。原h。令理如仿。果真时u’(间tk)间≈隔u(为tk)h, y,离’(t散k) 化≈ y后(t的k),输则入认变为量两为模u’型(tk等), 其价中,t称k表为示相
6.2.1 仿真过程的三类误差 通常,系统仿真的最终精度与现场原始数据的采集、使用的 计算机设备档次、仿真计算时的数值积分公式等均有相应的 关系,可以分为以下3种情况。 1. 初始误差
在对系统仿真时,要采集现场的原始数据,而计算时要提供 初始条件,这样由于数据的采集不一定很准,会造成仿真过 程中产生一定的误差,此类误差称为初始误差。 要消除或减 小初始误差,就应对现场数据进行准确的检测,也可以多次 采集,以其平均值作为参考初始数据。
控制系统的数学模型经过合理的近似及简化,大多数建立为常微分方程 的表达形式。由于数学计算的难度和实际系统的复杂程度,在实际中遇到 的大部分微分方程难以得到其解析解,通常都是通过数字计算机采用数值 计算的方法来求取其数值解。在高级仿真软件(例如MATLAB)环境下, 已提供了功能十分强大、且能保证相应精度的数值求解的功能函数或程序 段,使用者仅需要按规定的语言规格调用即可,而无需从数值算法的底层 考虑其编程实现过程。
第6章 数值积分法仿真
本章主要教学内容
本章主要介绍控制系统数学模型的相关知识,通 过本章的学习,读者应掌握以下内容:
➢求解常微分方程数值解的一般方法 ➢数值积分法的基本概念及其常用方法 ➢以系统微分方程或传递函数作为数学模型的仿真过程及程序 设计方法 ➢以系统动态结构图作为数学模型的仿真过程及程序设计方法 ➢仿真步长的选择与系统仿真精度和稳定性的对应关系 ➢快速仿真算法的概念、特点及其应用
6.2.2 稳定性分析
由于系统仿真时存在误差,对仿真结果产生会影响。若计 算结果对系统仿真的计算误差反应不敏感,那么称之为算法稳 定,否则称算法不稳定。对于不稳定的算法,误差会不断积累, 最终可能导致仿真计算达不到系统要求而失败。
1. 系统的稳定性与仿真步长的关系
一个数值解是否稳定,取决于该系统微分方程的特征根是 否满足稳定性要求,而不同的数值积分公式具有不同的稳定区 域,在仿真时要保证稳定就要合理选择仿真步长,使微分方程 的解处于稳定区域之中。
k2)
k2
f
(tk
h,
yk
hk1 )
四阶龙格—库塔公式 :
y
k
1
yk
h 6
(k1
2k2
2k3
k4 )
k1 f (tk , yk )
k 2
f (tk
h 2
,
yk
h 2
k1
)
k
3
f (tk
h 2
,
yk
h 2
k2 )
k4 f (tk h, yk hk3 )
不论几阶RK法,它们的计算公式都是由两部分组成,即上一步的结果yk和 步长h乖以tk至tk+1时间间隔间各外推点的导数ki的加权平均和
2. 舍入误差
目前,系统仿真大都采用计算机程序处理和数 值计算,由于计算机的字长有限,不同档次的计 算机其计算结果的有效值不一致,导致仿真过程 出现舍入误差。 一般情况下,要降低舍入误差应 选择挡次高些的计算机,其字长越长,仿真数值 结果尾数的舍入误差就越小。
3. 截断误差
当仿真步距确定后,采用的数值积分公式的阶 次将导致系统仿真时产生截断误差,阶次越高, 截断误差越小。通常仿真时多采用四阶龙格—库 塔法,其原因就是这种计算公式的截断误差较小。
6.1 数值积分法
6.1.1 概述
数字仿真模型、算法及仿真工具
控制系统的数字仿真是利用数字计算机作为仿真工具,采用数学上的各 种数值算法求解控制系统运动的微分方程,得到被控物理量的运动规律。 通常,计算机模拟被控对象是用一定的仿真算法来实现被控对象的运动规 律,这是基于被控对象的数学模型来完成的。
微分方程数值解的方法主要是数值积分法。 对于形如 y f (y,u,t) 的系统,已知系统状态变量y的初值y0,现
要计算y随时间变化的过程y(t),对微分方程的积分可以写作: y t
y(t) f (t, y)dt t 0
0
右图所示曲线下的面积就 是y(t),由于难以得到积分 的数值表达式,所以采用 近似的方法,常用有三种形式:
3、最优步长法
• 基本方法是根据本步的误差估计来近似地确定下一步可能的最大
步1)给长定,允步许骤的如相下对: 误差ε0,设本步步长为hk,本步相对估计误差为ek,
e E y ek由下式求得:
/(| | 1)
k
k
k
E h 若采用的RK公式是m阶,则上式中的Ek可以表示为
( ) m
k
k
e t h y 通常取ζ=tk,则有:
在仿真计算中,h值不宜选的太小,因为这样会加大计算量; 也不能选的过大,否则会导致仿真系统不稳定或误差积累过大。
通常掌握的原则是: 在保证计算稳定性及计算精度的要求下,尽可能选较大的 仿真步长。对于一般工程系统的仿真处理,采用四阶龙格—库 塔法居多 。
龙格-库塔法的步长控制策略
• 控制策略由误差估计和步长控制两方面 组成,其基本思想如下图所示:
Syntax
[T,Y] = solver(odefun,tspan,y0)
[T,Y] = solver(odefun,tspan,y0,options)
where solver is one of ode45, ode23, ode113, ode15s, ode23s, ode23t, or ode23tb. ArgumentsodefunA function that evaluates the right-hand side of the differential equations. All solvers solve systems of equations in the form or problems that involve a mass matrix, . The ode23s solver can solve only equations with constant mass matrices. ode15s and ode23t can solve problems with a mass matrix that is singular, i.e., differential-algebraic equations (DAEs). tspanA vector specifying the interval of integration, [t0,tf]. To obtain solutions at specific times (all increasing or all decreasing), use tspan = [t0,t1,...,tf].y0A vector of initial conditions.optionsOptional integration argument created using the odeset function. See odeset for details.p1,p2...Optional parameters that the solver passes to odefun and all the functions specified in options
相关主题