《控制系统仿真及MATLAB语言-连续系统的离散化方法.ppt》由会员分享,可在线阅读,更多相关《控制系统仿真及MATLAB语言-连续系统的离散化方法.ppt(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章第四章 连续系统的离散化方法连续系统的离散化方法4.1 常微分方程的数值解法一一.数值求解的基本概念数值求解的基本概念设微分方程为则求解方程中函数x(t)问题的常微分方程初值问题所谓数值求解就是要在时间区间a,b中取若干离散点 求出微分方程在这些时刻的近似值取前两项近似:这种方法的几何意义就是把f(t,x)在区间tk,tk+1内的曲边面积用矩形面积近似代替。计算简单,计算量小,而且可以自启动。当h很小时,造成的误差是允许的。该算法具有一阶精度。取k=0,1,2,N,从t0开始,逐点递推求解t1时的y1,t2时的y2,直至tn时的yn,称之为欧拉递推公式。矩形面积矩形面积1.欧拉法欧拉法
2、欧拉法的特点:导出简单,几何意导出简单,几何意义明显,便于理解,能说明构造数义明显,便于理解,能说明构造数值解法一般计算公式的基本思想值解法一般计算公式的基本思想。通常用它来说明有关的基本概念。例例 设系统方程为 用Euler法求其数值解(取步长 ,)递推公式为则已知方程的解析解为 精确解和解析解作比较:w误差在 数量级,精度较差。t00.10.20.30.40.51.0精确解10.909 0.833 0.769 0.666 0.625 0.5数值解10.90.819 0.752 0.659 0.6470.4632.龙格库塔法龙格库塔法 基本思想:基本思想:取Taylor级数展开式前三项近似求
3、解,并利用线性组合代替导数的求解。既可避免计算高阶导数,又可提高数值积分的精度,这就是Runge-Kutta法的基本思想。2.龙格库塔法龙格库塔法r为精度阶次,为精度阶次,ai为待定系数,由精度确定;为待定系数,由精度确定;ki用下用下式表示式表示线性组合线性组合等各阶导数不易计算,用下式中等各阶导数不易计算,用下式中kiki的线性组合代替的线性组合代替1)当r=1时:与Taloy展开式相比较,可得a1=1,则上式成为欧拉递推公式2)当r=2时:将 在点 展成Taylor级数与台劳公式的二阶展开近似公式相比,可得以下关系:与台劳公式的二阶展开近似公式相比,可得以下关系:三个方程,四个未知数,解
4、不唯一三个方程,四个未知数,解不唯一各个系数的几种取法各个系数的几种取法见书上。见书上。3)r=4时,四阶龙格库塔公式时,四阶龙格库塔公式-最常用:最常用:仿真中遇到的大多数工程实际问题,四阶龙格库塔法以能满足精度要求,其截断误差o(h5)与h5同数量级。该法可以自启动。4)、状、状态态空空间间四四阶龙阶龙格格-库库塔塔递递推式推式 若若单输单输入入单输单输出系出系统统的状的状态态空空间间表达式表达式为为:在仿真中,在仿真中,对对于于n阶阶系系统统,状,状态态方程可以写成一方程可以写成一阶阶微分方程微分方程 根据四根据四阶龙阶龙格格-库库塔公式塔公式,有有T=tT=tk k时刻的时刻的x xi
5、 i值值T=tT=tk k+h+h时刻的时刻的x xi i值值 另另 状状态态方程的四方程的四阶龙阶龙格格-库库塔公式如下:塔公式如下:RK法的特点:法的特点:1 需要存储的数据少,占用的存储空间少;2 只需知道初值,即可启动递推公式进行计 算,可自启动;3 容易实现变步长运算。4 每积分一步需要计算多次右函数,计算量 大。基于龙格库塔法,MATLAB提供了求常微分方程数值解的函数,一般调用格式为:t,x=ode23(xfun,t0,tf,x0)t,x=ode45(xfun,t0,tf,x0)常微分方常微分方程函数名程函数名起始起始时间时间终止终止时间时间初始状初始状态向量态向量输入输入输出输
6、出4/54/5阶龙格阶龙格-库塔算法库塔算法2/32/3阶龙格阶龙格-库塔算法库塔算法3.3.常微分方程常微分方程MatlabMatlab求解求解解解:令令 y1=x,y2=x1、建立、建立M-文件文件vdp.m如下:如下:function dy=vdp(t,y)dy=zeros(2,1);dy(1)=y(2);dy(2)=2*(1-y(1)2)*y(2)-y(1);2、取、取t0=0,tf=20,输入命令:,输入命令:T,Y=ode45(vdp,0 10,1;1);plot(T,Y(:,1),-,T,YT,Y(:,2)3、结果、结果解解 1、建立、建立m-文件文件rigid.m如下:如下:f
7、unction dy=rigid(t,y)dy=zeros(3,1);dy(1)=y(2)*y(3);dy(2)=-y(1)*y(3);dy(3)=-0.51*y(1)*y(2);2、取取t0=0,tf=12,输入命令:,输入命令:T,Y=ode45(rigid,0 12,0 1 1);plot(T,Y(:,1),-,T,Y(:,2),*,T,Y(:,3),+)3、结果如图、结果如图图中,y1的图形为实线,y2的图形为“*”线,y3的图形为“+”线.4.2 数值算法的稳定性及求解原则1.1.数值算法的稳定性数值算法的稳定性 特征根在特征根在s s平面的左半平面,系统稳定。平面的左半平面,系统稳
8、定。(1)欧拉法:稳定:(2)梯形法:恒稳2.2.数值算法的选择原则数值算法的选择原则 Matlab提供了微分方程数值求解的一般方法,作为仿真算法的使用者,可不必考虑算法具体实现,而应关心各种方法在使用中会出现的问题,以及如何在仿真中恰当的选用这些方法.一般,选用数值算法从以下几个方面考虑:(1)精度受算法和h影响截断误差+舍入误差=累计误差(2)计算速度受算法和h影响算法简单,速度就快些。(3)稳定性 受h影响,一般 h(2-3)系统最小时间系统最小时间4.3 数值算法中的数值算法中的“病态病态”问题问题 1“病态”常微分方程例:其中采用四阶龙格库塔法h=0.01时,计算时间长时,计算时间长
9、h=0.04时,误差很大时,误差很大当当h0.05后,曲线发散振荡,数值不稳定,完全失去意义后,曲线发散振荡,数值不稳定,完全失去意义系统矩阵的特征值差异较大系统矩阵的特征值差异较大系统矩阵的特征值差异较大系统矩阵的特征值差异较大一般线性常微分方程组:一般线性常微分方程组:的系数矩阵的系数矩阵A的特征值具有如下特征:的特征值具有如下特征:则称为则称为“病态病态”方程。方程。定义:定义:2 控制系统仿真中的“病态”问题1 病态系统中绝对值最大的特征值对应于系统动态性能解中瞬态分量衰减最快的部分,它反映了系统的动态响应和系统的反应灵敏度。一般与系统中具有最小时间常数Tmin的环节有关,要求计算步长
10、h取得很小。2 病态系统中绝对值最小的特征值对应于系统动态性能解中瞬态分量衰减最慢的部分,它决定了整个系统的动态过渡过程时间的长短。一般与系统中具有最小时间常数Tmax的环节有关,要求计算步长h取得很大。3 对于病态问题的仿真需要寻求更加合理的算法,以解决病态系统带来的选取计算步长与计算精度,计算时间之间的矛盾。3 “病态”系统的仿真方法 采用稳定性好,计算精度高的数值算法,并且允许计算步长能根据系统性能动态变化的情况在一定范围内作相应的变化,采用隐式吉尔法该法已经证明对病态方程求解过程是数值稳定的。隐式吉尔法从理论上十分适应于病态系统,但需要解决好以下问题(1)自启动 r阶多步算式无法自启动
11、,需要用单步法求出前r步值(2)预估迭代 迭代方法要求收敛性良好,否则在大步长时会造成数 值发散。(3)变步长 初始阶段采用小步长,随后可逐步放大步长。对不同精度要求的系统仿真,要考虑变阶次问题,即为减小每一步计算的截断误差,以提高精度,应选用较高的阶次,而当精度较低时,为减少工作量,则应选取较低的阶次。仿真时应根据估计误差 与给定的误差精度相比较改变步长或阶次来重新计算。4.4 连续系统状态方程的离散化上章所述的连续系统数学模型的离散化,上章所述的连续系统数学模型的离散化,是通过数值积分法实现的,尽管面向结是通过数值积分法实现的,尽管面向结构图的仿真方法是按环节给定参数,但构图的仿真方法是按
12、环节给定参数,但是在计算时还是是在计算时还是按整个系统进行离散化按整个系统进行离散化,这就不便于引进非线性环节以进行非线这就不便于引进非线性环节以进行非线性系统的仿真。在本节,将介绍连续系性系统的仿真。在本节,将介绍连续系统离散模型的建立和仿真。统离散模型的建立和仿真。数值积分法叠代求解数值积分法叠代求解数值积分法叠代求解数值积分法叠代求解h改变时,叠代过程重复求解,费时繁琐不能对非线性环节单独考虑。连续系统离散化连续系统离散化思想:用差分方程描述连续系统的状态方程模型思想:用差分方程描述连续系统的状态方程模型(因为差分方程的主要特点就是方程中各变量由各相邻时刻的变(因为差分方程的主要特点就是
13、方程中各变量由各相邻时刻的变 化量制约,这相当于递推方程)化量制约,这相当于递推方程)1 1、连续系统的离散化、连续系统的离散化 设连续系统状态方程为设连续系统状态方程为其中其中为状态初始值为状态初始值.则由现代控制理论基础知,状态变量则由现代控制理论基础知,状态变量X(t)的解为的解为而而 t=(k+1)T 时,可表示为时,可表示为当系统输入当系统输入u(t)u(t)给定时,可求出系统离散化状态方程给定时,可求出系统离散化状态方程的解。一般,的解。一般,u(t)u(t)未知,通常采用两种方法近似处理:未知,通常采用两种方法近似处理:(1)(1)令令u(kT+t)u(kT+t)u(kT)(0u
14、(kT)(0t tT)T)相当在系统输入端加一个采样开关和零阶保持器相当在系统输入端加一个采样开关和零阶保持器 X X(k k+1)+1)T T)=)=GXGX(kTkT)+)+HuHu(kTkT)G G=e e A TA T,为,为t t=T T 时的状态转移矩阵时的状态转移矩阵离散后的状态空间表达式为:离散后的状态空间表达式为:、MatlabMatlab表示表示已知连续系统状态方程为已知连续系统状态方程为在采样周期在采样周期T下离散后的状态空间表达可表示为:下离散后的状态空间表达可表示为:在在MatlabMatlab中,若已知连续系统状态方程各阵模型参数中,若已知连续系统状态方程各阵模型参
15、数(A A、B B、C C、D D)以及采样周期以及采样周期T T,则语句:,则语句:G G,H H=c2d(=c2d(A A,B B,T)返回的矩阵返回的矩阵G G、H H 就是所要求的就是所要求的(T T)、m m(T T)。此外,此外,MatlabMatlab还提供了功能更强的求取连续系统离还提供了功能更强的求取连续系统离散化矩阵函数散化矩阵函数c2dm(),c2dm(),他容许调用时选用离散化变换他容许调用时选用离散化变换方式,并且得到的是标准的离散化状态方程。方式,并且得到的是标准的离散化状态方程。G G,H H,C C,D D=c2dm(=c2dm(A A,B B,C C,D D,
16、T T,选项选项)表表 离散化变换方式选项离散化变换方式选项选选 项项说说 明明Zoh假设输入端加一个采样开关和零阶保持器假设输入端加一个采样开关和零阶保持器Foh假设输入端加一个采样开关和一阶保持器。假设输入端加一个采样开关和一阶保持器。Tustin采用双线性变换(采用双线性变换(Tustin算法)方法算法)方法Prewarp采用改进的采用改进的Tustin变换方法变换方法Matched采用采用SISO系统的零极点匹配法系统的零极点匹配法2.离散函数的连续化离散函数的连续化 在MATLAB中也提供了从离散化系统转换为连续系统各系数矩阵求取的功能函数,其调用格式分别如下 A,B=d2c(G,H
17、,T)或或 A,B,C,D=d2cm(G,H,C,D,T,选选项项)其中选项同上。其中选项同上。例例 对连续系统在采样周期对连续系统在采样周期T=0.1T=0.1时进行离散化。时进行离散化。解:利用以下解:利用以下MatlabMatlab命令,对系统进行离散化命令,对系统进行离散化k=6;Z=-3;P=-1;-2;-5;T=0.1;A,B,C,D=zp2ss(Z,P,k);G1,H1=c2d(A,B,T);G2,H2,C2,D2=c2dm(A,B,C,D,T,zoh);G3,H3,C3,D3=c2dm(A,B,C,D,T,foh);3 3、脉冲传递函数求解、脉冲传递函数求解 连续连续 离散离散function nd,dd=tfc2d(nc,dc,T)A,B,C,D=tf2ss(nc,dc);G,H=c2d(A,B,T);nd,dd=ss2tf(G,H,C,D);离散离散 连续连续function nc,dc=tfd2c(nd,dd,T)A,B,C,D=tf2ss(nd,dd);G,H=d2c(A,B,T);nc,dc=ss2tf(G,H,C,D);