资源描述
,第七章,系统时间响应及其仿真,仿真技术,第七章 系统时间响应及其仿真,本章主要内容如下:,7.1,仿真算法,7.2,系统仿真的,MATLAB,函数,系统的时间响应是指系统在输入信号或初始状态作用下,系统输出随时间变化的情况。系统的时间响应反映了系统的特征和性能,如快速性、稳定性等。对系统时间响应的分析是我们设计、校正系统的基础。,第七章 系统时间响应及其仿真本章主要内容如下:系统,第七章 系统时间响应及其仿真,7.1,仿真算法,对系统的时间响应进行动态仿真,采用什么样的仿真算法是一个至关重要的问题。对连续时间系统进行数字动态仿真,主要是两种方法:,基于数值积分的仿真方法,;,基于离散相似法的仿真方法。,由于后者涉及到离散控制系统理论,因此本节重点介绍基于数字积分的连续系统仿真方法。,第七章 系统时间响应及其仿真7.1 仿真算法 由于,7.1,仿真算法,7.1.1,数值求解的基本概念,设微分方程为,则求解方程中函数,y,(,t,),问题,就是已知初值的常微分方程求解问题。,所谓数值求解就是要在时间区间,a,b,中取若干离散点,求出微分方程在这些时刻的近似值,常微分方程数值求解的基本方法是数值积分法。,7.1 仿真算法7.1.1 数值求解的基本概念,7.1,仿真算法,7.1.2,数值积分的基本原理,积分区间的划分,将区间,a,b,分成,N,个小区间,时间间隔,h,(,),也称为积分步长,在第,k,个间隔,t=t,k,t,k+1,内积分:,则可用,y,k,(,k,=0,1,N,)作为解,y,(t),的近似值,如图所示。,a,b,t,k,y,0,y,k,y,t,数值积分图解,t,k,+1,7.1 仿真算法7.1.2 数值积分的基本原理将区间,7.1,仿真算法,7.1.2,数值积分的基本原理,数值积分的展开式,为避免,(2),式中的积分项,将,y,在,t,k,,以,h,为增量展开成,Taylor,级数:,式,(3),是一个递推公式。积分值与实际微分方程解的误差取决于步长,h,和计算所用的阶数,它是数值积分的基础。,7.1 仿真算法7.1.2 数值积分的基本原理式(3),7.1,仿真算法,7.1.2,数值积分的基本原理,有关概念,单步法和多步法,单步法指计算,y,k+,1,值只需利用,t,k,时刻的信息,也称为自启动算法;多步法在计算,y,k+,1,值时,则需利用,t,k,,,t,k-,1,,,时刻的信息。,显示法和隐式法,显示法在计算,y,k+,1,时所需数据均已算出;隐式法在计算,y,k+,1,时需用到,t,k+,1,时刻的数据,该算法必须借助予估公式。,定步长和变步长,定步长为积分步长在仿真运行过程中始终不变;变步长指在仿真运行过程中自动修改步长。,7.1 仿真算法7.1.2 数值积分的基本原理显示法和,7.1,仿真算法,7.1.3,数值积分的几个算法,欧拉算法,在,(3),式中取前两项:,可得欧拉算法:,t,0,t,1,t,2,t,3,h,y,(t),y,0,y,1,y,t,欧拉近似解,欧拉法,【,说明,】,欧拉法是用一条过各点的切线取代曲线来逼近精确解。该算法简单,计算量小,但精度较低。,7.1 仿真算法7.1.3 数值积分的几个算法t0t1,7.1,仿真算法,7.1.3,数值积分的几个算法,梯度法,梯度法是欧拉法的改进,。,与欧拉法相比,梯度法是用两个点,(,t,m,,,y,m,),、,(,t,m+,1,y,m+,1,),的斜率的平均值来确定下一点的,y,值。,由于上式计算时需要用到,y,m+,1,的值,而,y,m+,1,不能预先知道,故梯度法需要和欧拉法结合使用,即用欧拉法对,y,m+,1,进行予估,再由梯度法计算,y,m+,1,7.1 仿真算法7.1.3 数值积分的几个算法,7.1,仿真算法,7.1.3,数值积分的几个算法,龙格,-,库塔法,龙格,-,库塔法的基本思想,欧拉算法的精度较低,主要是其微分方程解,y,的,Taylor,展开式所取的项数太少。显然为了提高计算精度,应当取泰勒公式(,3,)更高阶项。,虽然增加高阶项可提高计算精度,但也同时带来了需要计算高阶导数的困难。,龙格,-,库塔法,的关键是利用低阶导数构成的曲线去拟合含有高阶导数的曲线,从而避免了计算高阶导数的问题。,7.1 仿真算法7.1.3 数值积分的几个算法,7.1,仿真算法,7.1.3,数值积分的几个算法,龙格,-,库塔法,二阶龙格,-,库塔(,RK,)法,取,(3),式的前三项,则有,设原微分方程,(1),式解具有以下形式,:,式中,,a,1,,,a,2,,,b,1,,,b,2,为待定系数。,7.1 仿真算法7.1.3 数值积分的几个算法设原微分,将,(8),式中,K,2,按二元函数展开成泰勒级数,并取前三项,将,K,1,,,K,2,代入,(8),式:,比较,(6-10),、,(6-7),式:,将(8)式中K2按二元函数展开成泰勒级数,并,显然由,(11),式并不能唯一确定,a,1,a,2,b,1,b,2,,因为只有三个方程。因此对于同一种算法可以有不同的表现形式。,【,说明,】,由于该算法只取到泰勒展开式的二阶导数项,所以称为二阶龙格,-,库塔法。但由,(8)(12),式可知,算法并没有用,y,的二阶导数。,若设,a,1,=a,2,,则,即二阶,RK,法公式为,显然由(11)式并不能唯一确定a1,a2,b1,7.1,仿真算法,7.1.3,数值积分的几个算法,龙格,-,库塔法,龙格,-,库塔(,RK,)法的一般形式,式中,,i,为待定权系数,,a,i,b,ij,为待定系数,,r,为使用,K,i,的个数,(,即级数,),,,K,i,为所取各点导数,f,的值。,K,i,的个数与,y,k+,1,泰勒展开式所取的项数有关,(,即,RK,算法的阶数,),,同时还与计算区间内所取导数值的点数有关。,7.1 仿真算法7.1.3 数值积分的几个算法式中,,7.1,仿真算法,7.1.3,数值积分的几个算法,龙格,-,库塔法,四阶,RK,公式,四阶,RK,公式用到了,y,的泰勒展开式的四阶导数。在,RK,算法的一般公式(,13,)中,取,r=4,可得:,由于,(14),式在同级的,RK,算法中,计算精度较高,计算量较少,而在系统仿真的数值积分中应用十分广泛。称之为四阶四级,RK,公式。,7.1 仿真算法7.1.3 数值积分的几个算法,7.1,仿真算法,7.1.3,数值积分的几个算法,Gear,算法,“,病态”常微分方程,(,刚性方程,),的系数矩阵,A,的特征值具有如下特征:,则称为“病态”方程。,7.1 仿真算法7.1.3 数值积分的几个算法则称为“,7.1,仿真算法,7.1.3,数值积分的几个算法,Gear,算法,控制系统仿真中的“病态”问题,病态系统中绝对值最大的特征值对应于系统动态性能解中瞬态分量衰减最快的部分,它反映了系统的动态响应和系统的反应灵敏度。一般与系统中具有最小时间常数,T,min,的环节有关,要求计算步长,h,取得很小。,病态系统中绝对值最小的特征值对应于系统动态性能解中瞬态分量衰减最慢的部分,它决定了整个系统的动态过渡过程时间的长短。一般与系统中具有最大时间常数,T,max,的环节有关,要求计算步长,h,取得很大。,对于病态问题的仿真需要寻求更加合理的算法,以解决病态系统带来的选取计算步长与计算精度、计算时间之间的矛盾。,7.1 仿真算法7.1.3 数值积分的几个算法,7.1,仿真算法,7.1.3,数值积分的几个算法,Gear,算法,Gear,算法,Gear,算法适用于病态系统的仿真,该算法,类似于四阶,RK,算法,7.1 仿真算法7.1.3 数值积分的几个算法,7.1,仿真算法,7.1.4,数值积分方法的选择,在选择积分方法时应考虑以下几个问题。,计算精度,数值积分方法所得到的离散数值解只是精确解的近似,其误差来自两个方面,即舍入误差和局部截断误差。,舍入误差,:由计算机字长有限而造成的计算时的舍入误差,它随计算次数的增加而增加。因此舍入误差与计算步长,h,成反比。,局部截断误差,:,由积分方法和阶次的限制而引起的误差。这种误差与,h,成正比。,截断误差,舍入误差,总误差,e,h,误差与积分步长,显然选择一个合适的积分步长可使总误差达到最小。,7.1 仿真算法7.1.4 数值积分方法的选择局部截,7.1.4,数值积分方法的选择,积分步长的选择和控制,积分步长的选择原则,在保证数值积分稳定性和精度的前提下,尽可能选则较大的积分步长,以减少仿真计算次数和仿真时间。,固定步长与变步长,固定步长,:,在整个仿真计算过程中,积分步长,h,始终不变。其算法简单,但很难保证步长最优。,此外,,h,还应与模型的信号响应情况有关,例如在稳态时,可取较大的步长,见上图。,变步长:,在仿真计算过程中根据计算误差的大小来改变步长。其目的是在保证一定计算精度的前提下,尽可能选择较大步长。,7.1.4 数值积分方法的选择此外,h还应与模型的信号响应,7.2,系统仿真的,MATLAB,函数,7.2.1,数值积分方法的,MATLAB,函数,对于用数值方法求解常系数微分方程,(Ordinary Differential Equation,简写为,ODE),或微分方程组,,MATLAB,提供了七种解函数,最常用的是,ODE45,(四阶,RK,算法,单步、变步长,用五阶,RK,算法估算局部截断误差),其调用格式为:,T,Y=ode45(f,tspan,y0),【,说明,1】,f,为常微分方程(组)或系统模型的文件名;,tspan=t0,tfinal,即积分时间初值和终值;,y0,是积分初值;,T,为计算时间点的时间向量;,Y,为相应的微分方程解数据向量或矩阵。,7.2 系统仿真的MATLAB函数7.2.1 数值积,7.2,系统仿真的,MATLAB,函数,7.2.1,数值积分方法的,MATLAB,函数,【,说明,2】,对于刚性微分方程(特征值数值相差较大),可用,ode15s,,其调用格式与,ode45,相同。,ode,函数只能用于求解一阶微分方程或一阶微分方程组。若系统的数学模型为高阶微分方程,则应将高阶微分方程转化成一阶微分方程组。因此在用,MATLAB,的,ode,函数求解微分方程时,应首先建立描述系统模型的一阶微分方程(组)函数,f,。,7.2 系统仿真的MATLAB函数7.2.1 数值积,【,例,2】,已知二阶 微分方程,求时间区间,t=0,,,20,微分方程的解。,解:,(,1,)将微分方程表示为一阶微分方程组,【,说明,】,这种描述系统微分方程的函数与,ODE,函数配套使用,其格式是固定的。,dy,为,2*1,数组,其维数等于微分方程的阶数。,(,2,)建立描述系统微分方程的,m-,函数文件,vdp.m,function dy=vdp(t,y),dy=zeros(2,1);,%,生成,2,行,1,列的零阵,dy(1)=y(2);,%,dy(2)=(1-y(1)2)*y(2)-y(1);,%,【例2】已知二阶 微分方程解:(1)将微分方程表示为一阶微分,(,3,)编写,MATLAB,主程序,T,Y=ode45(VDPd,0 20,0,1);,%,调用,ode45,产生离散点时间向量,和解向量,plot(T,Y(:,1),r-,T,Y(:,2),b:),title(Solution),xlabel(time s),ylabel(Position Y),legend(y1,y2),运行结果如右图所示。其中,y1(,红线,),为微分方程的解。,(3)编写MATLAB主程序T,Y=ode45(VDP,7.2,系统仿真的,MATLAB,函数,7.2.2,时间响应仿真的,MATLAB,函数,对于线性时不变系统,,MATLAB,直接提供了在各种输入作用下的时间响应函数。,阶跃响应仿真函数(,STEP,),基本调用格式,对于,LTI,连续,(,或离散,),时间系统,以下调用格式可用于绘制系统单位阶跃响应曲线。,step(sys),step(sys,Tfinal),其中
展开阅读全文