Matlab问题状态方程的解.pptx
《Matlab问题状态方程的解.pptx》由会员分享,可在线阅读,更多相关《Matlab问题状态方程的解.pptx(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Matlab问题(1/3)3.6 Matlab问题本章中涉及的计算问题主要有矩阵指数函数的计算、系统运动轨迹的计算(即状态空间模型的求解)以及连续系统的离散化(采样)。基于Matlab的基本函数和工具箱,可以进行上述系统运动分析的计算和仿真。第1页/共68页Matlab问题(2/3)为更好地进行动态系统运动分析的计算和仿真,编著者设计了一个Matlab符号化和图形化的控制系统运动分析软件平台lti_analysis。这里将涉及新的Matlab程序设计方法,如使用符号计算工具箱进行矩阵指数函数和运动轨迹的符号计算、使用图形用户界面(GUI)设计控制系统仿真与实验的软件平台。第2页/共68页Mat
2、lab问题(3/3)下面分别介绍基于Matlab的上述问题的程序编制和计算方法,主要有矩阵指数函数的计算线性定常连续系统的状态空间模型求解 连续系统的离散化线性定常离散系统的状态空间模型求解 线性定常系统的运动分析的符号计算和仿真平台 第3页/共68页矩阵指数函数的计算(1/1)3.6.1 矩阵指数函数的计算矩阵指数函数的计算问题有两类,一类是数值计算,即给定矩阵A和具体的时间t的值,计算矩阵指数eAt的值;另一类是符号计算,即在给定矩阵A下,计算矩阵指数函数eAt的封闭的(解析的)矩阵函数表达式。数值计算问题可由基本的Matlab函数完成,符号计算问题后一类则需要用到Matlab的符号工具箱
3、。下面就分别介绍eAt的数值计算eAt的符号计算第4页/共68页eAt的数值计算(1/4)1.eAt的数值计算在Matlab中,给定矩阵A和时间t的值,计算矩阵指数eAt的值可以直接采用基本矩阵函数expm()。Matlab的expm()函数采用帕德(Pade)逼近法计算矩阵指数eAt,精度高,数值稳定性好。expm()函数的主要调用格式为Y=expm(X)其中,X为输入的需计算矩阵指数的矩阵,Y为计算的结果。第5页/共68页eAt的数值计算(2/4)Matlab问题问题3-1 试在Matlab中计算例3-1中矩阵A在t时的矩阵指数eAt的值。Matlab程序程序m3-1如下。Matlab程序
4、程序m3-1执行结果执行结果如下。A=0 1;-2-3;t=0.3;eAt=expm(A*t)eAt=0.9328 0.1920 -0.3840 0.3568 第6页/共68页在Matlab中还有3个计算矩阵指数eAt的函数,分别是expmdemo1(),expmdemo2()和expmdemo3()。expmdemo1()就是expm(),采用帕德逼近法计算矩阵指数;而expmdemo2()采用节中介绍的利用泰勒级数展开法来计算,精度较低;expmdemo3()采用节中介绍的利用特征值和特征向量来计算对角线矩阵,进而通过对角线矩阵的矩阵指数计算原矩阵的矩阵指数。eAt的数值计算(3/4)第7
5、页/共68页eAt的数值计算(4/4)expmdemo3()的计算精度取决于特征值、特征向量、指数函数exp()的计算精度,由于这3种计算有良好的计算方法,因此expmdemo3()的计算精度最高。但expmdemo3()只能计算矩阵的独立特征向量数等于矩阵的维数,即矩阵能变换为对角线矩阵的情况,因此,在不能判定矩阵是否能变换为对角线矩阵时,尽量采用函数expm()。第8页/共68页eAt的符号计算(1/8)2.eAt的符号计算在Matlab中,对给定矩阵A,可通过符号计算工具箱的函数expm()计算变量t的矩阵指数函数eAt的表达式。在使用Matlab的符号计算工具箱计算时,需要定义符号变量
6、,输入符号表达式与符号矩阵。下面介绍使用符号计算工具箱需要的基本操作。第9页/共68页eAt的符号计算(2/8)1)定义符号变量定义(指定)符号变量的语句的格式为syms t s x.该语句将符号t,s,x,定义为符号变量。在该语句后,就可以输入和计算符号表达式与符号矩阵。第10页/共68页eAt的符号计算(3/8)2)输入符号表达式符号表达式的输入可采用赋值语句的方式,如赋值语句f1=sin(x)2+cos(y)3-3为定义符号表达式变量f1为表达式 。在Matlab中,符号表达式的输入采用符号串的形式,其表达式的格式与Matlab的数值计算的格式基本一致。第11页/共68页eAt的符号计算
7、(4/8)3)输入符号矩阵Matlab中符号矩阵的输入采用函数sym()。sym()的调用格式为S=sym(A)该函数的功能为将符号串A转换为符号矩阵,其中符号串A的格式与使用Matlab进行数值计算时矩阵的计算公式格式基本一致。如f2=sym(x2+sqrt(1-x)y*x;1+z x+z3)的函数sym()将符号串x2+sqrt(1-x)y*x;1+z x+z3转换为如下表示的符号矩阵第12页/共68页eAt的符号计算(5/8)在给符号表达式变量和符号矩阵变量赋值后,在Matlab中就可以像数值计算公式那样直接采用算术运算符“+”,“-”,“*”,“/”,“”,以及exp(),expm()
8、等函数进行符号计算。如,在前面的符号表达式变量f1和符号矩阵变量f2赋值后,执行符号计算公式f3=f1*f2就进行如下符号表达式的计算第13页/共68页eAt的符号计算(6/8)使用Matlab的符号工具箱的函数expm()可直接计算关于符号矩阵变量A的矩阵指数函数eA的表达式。符号计算函数expm()的调用格式为expA=expm(A)其中,输入矩阵A为Matlab的符号矩阵,输出矩阵expA为计算所得的eA的Matlab符号矩阵。Matlab问题3-2 试在Matlab中计算例3-1中矩阵A的矩阵指数eAt。第14页/共68页eAt的符号计算(7/8)Matlab程序程序m3-2如下。其中
9、t定义为符号变量,输入矩阵A为一般Matlab的数值矩阵,表达式A*t即为Matlab的符号矩阵。Matlab程序程序m3-2执行结果执行结果如下。上述计算结果与例3-1的计算结果完全一致。syms t;A=0 1;-2-3;eAt=expm(A*t)%定义符号变量t%计算矩阵A对应的矩阵指数函数 eAt=2*exp(-t)-exp(-2*t),-exp(-2*t)+exp(-t)2*exp(-2*t)-2*exp(-t),-exp(-t)+2*exp(-2*t)例3-1的计算结果第15页/共68页eAt的符号计算(8/8)Matlab有着功能非常强大的符号计算功能,包括符号微分、符号积分、符
10、号矩阵运算、符号线性方程组解、符号非线性方程组解、符号常微分方程组解等,还可以与符号计算软件Maple混合编程,调用Maple的其他符号计算功能。第16页/共68页线性定常连续系统的状态空间模型求解(1/2)3.6.2 线性定常连续系统的状态空间模型求解 Matlab提供了非常丰富的线性定常连续系统的状态空间模型求解(即系统运动轨迹的计算)的功能,主要的函数有初始状态响应函数initial()、阶跃响应函数step()以及可计算任意输入的系统响应函数lsim(),但这里主要是计算其系统响应的数值解。第17页/共68页线性定常连续系统的状态空间模型求解(2/2)对系统运动分析问题,有时需要求解系
11、统响应的函数表达式。为此,编著者编写了专门用于求解系统响应函数表达式的Matlab符号计算函数sym_lsim()。下面将分别介绍状态空间模型求解的Matlab程序编制和计算问题,主要内容有:初始状态响应函数initial()、阶跃响应函数step()、任意输入的系统响应函数lsim(),以及任意输入的符号响应函数sym_lsim()。第18页/共68页初始状态响应函数initial()(1/8)1.初始状态响应函数initial()初始状态响应函数initial()主要是计算状态空间模型(A,B,C,D)的初始状态响应,其主要调用格式为initial(sys,x0,t)y,t,x=initi
12、al(sys,x0,t)其中sys为输入的状态空间模型;x0为给定的初始状态;t为指定仿真计算状态响应的时间区间变量(数组)。第1种调用格式的输出格式为输出响应曲线图,第2种调用格式的输出为数组形式的输出变量响应值y,仿真时间坐标数组t,状态变量响应值x。第19页/共68页初始状态响应函数initial()(2/8)Matlab中,时间区间变量(数组)t有三种格式:t=Tintial:dt:Tfinal 表示仿真时间段为Tintial,Tfinal,仿真时间步长为dtt=Tintial:Tfinal 表示仿真时间段为Tintial,Tfinal,仿真时间步长dt缺省为1t=Tfinal 表示仿
13、真时间段为0,Tfinal,系统自动选择仿真时间步长dt若时间数组缺省(没有指定),表示系统自动选择仿真时间区间0,Tfinal和仿真时间步长dt。第20页/共68页初始状态响应函数initial()(3/8)Matlab问题问题3-3 试在Matlab中计算例3-1中如下系统在0,5s的初始状态响应。Matlab程序程序m3-3如下。其中,最后一句语句plot(t,x)是以时间坐标数组t为横坐标,绘出x中存储的2维状态向量x(t)的随时间变化的轨迹。A=0 1;-2-3;B=;C=;D=;x0=1;2;sys=ss(A,B,C,D);y,t,x=initial(sys,x0,0:5);plo
14、t(t,x)%输入状态空间模型各矩阵,若没有相应值,可赋空矩阵%输入初始状态%求系统在0,5s的初始状态响应%绘以时间为横坐标的状态响应曲线图 第21页/共68页初始状态响应函数initial()(4/8)Matlab程序程序m3-3执行结果执行结果如图3-4所示。图3-4 Matlab问题3-3的状态响应曲线图第22页/共68页初始状态响应函数initial()(5/8)Matlab提供的函数initial()只能计算出状态响应的计算值,若需要计算状态响应的表达式则需要根据前面介绍的符号工具箱,自己编程实现状态响应函数表达式的求解。Matlab问题问题3-4 试在Matlab中计算Matla
15、b问题3-3的初始状态响应表达式。Matlab程序程序m3-4如下。A=0 1;-2-3;sysm t;x0=1;2;xt=expm(A*t)*x0 第23页/共68页初始状态响应函数initial()(6/8)Matlab程序程序m3-4执行结果执行结果如下。在Matlab程序m3-3中运用了绘图函数plot()。Matlab提供了非常强大的绘图功能,可以绘2维曲线图、3维曲面图、4维切片图以及动态图形(动画),其中函数plot()是主要的2维曲线绘图函数,主要调用格式为:plot(Y)plot(X,Y)plot(X,Y,LineSpec,PropertyName,PropertyValue
16、)xt=-3*exp(-2*t)+4*exp(-t)-4*exp(-t)+6*exp(-2*t)例3-3的计算结果第24页/共68页初始状态响应函数initial()(7/8)第1种调用格式的输入Y为mn矩阵,其输出为矩阵Y的每一列画一条曲线,共n条曲线的曲线图。该曲线图的横坐标为1至m的自然数。对第2种调用格式,若X和Y为向量,则长度必须相等,输出为一条X为横坐标轴的曲线。若X为向量,Y为矩阵,则X的长度等于Y的行数或者列数。这时输出为Y的列向量或者行向量对应的,以X为横坐标轴的一组曲线。若Y为向量,X为矩阵,则Y的长度等于X的行数或者列数。这时输出为X的列向量或者行向量对应的,以Y为纵坐标
17、轴的一组曲线。第25页/共68页初始状态响应函数initial()(8/8)第3种调用格式的LineSpec为指定输出曲线的线型、颜色、曲线数据点的标记符号。而PropertyName和PropertyValue则用于指定图的一些特性,如图名、坐标名与刻度等。第26页/共68页阶跃响应函数step()(1/2)2.阶跃响应函数step()阶跃响应函数step()可用于计算在单位阶跃输入和零初始状态(条件)下传递函数模型的输出响应,或状态空间模型的状态和输出响应,其主要调用格式为step(sys,t)y,t=step(sys,t)y,t,x=step(sys,t)其中,对第1、2种调用格式,sy
18、s为传递函数模型变量或状态空间模型变量;对第3种方式,sys为状态空间模型变量。t为指定仿真计算状态响应的时间数组,其格式与初始状态响应函数initial()一样,也可以缺省。第27页/共68页阶跃响应函数step()(2/2)第1种调用格式的输出为输出响应的图形输出,而第2、3种调用格式的输出为将输出响应、时间坐标数组、状态响应赋值给指定的数组变量。阶跃响应函数step()的使用方法与前面介绍的initial()函数相似,这里不再赘述。第28页/共68页任意输入的系统响应函数lsim()(1/10)3.任意输入的系统响应函数lsim()任意输入的系统响应函数lsim()可用于计算在给定的输入
19、信号序列(输入信号函数的采样值)下传递函数模型的输出响应,或状态空间模型的状态和输出响应,其主要调用格式为lsim(sys,u,t,x0)y,t,x=lsim(sys,u,t,x0)其中,sys为传递函数模型变量或状态空间模型变量;t为时间坐标数组;u是输入信号u(t)对应于时间坐标数组t的各时刻输入信号采样值组成的数组,是求解系统响应必须给定的;第29页/共68页任意输入的系统响应函数lsim()(2/10)x0是初始状态向量。当输入的sys为传递函数模型时,x0的值不起作用,可以缺省。函数lsim()的第1种调用格式的输出为将输出响应和输入信号序列绘在一起的曲线图,第2种调用格式的输出与前
20、面介绍的2个响应函数一样。第30页/共68页任意输入的系统响应函数lsim()(3/10)输入变量u(t)的值u可以为用户需要的任意输入函数根据时间坐标数组t进行采样获得,也可以采用Matlab中的信号生成函数gensig()产生。gensig()的调用格式为u,t=gensig(type,tau)u,t=gensig(type,tau,Tf,Ts)其中,type为选择信号类型的符号串变量;tau为以秒为单位的信号周期;Tf和Ts分别为产生信号的时间长度和信号的采样周期。gensig 函数可以产生的信号类型type为正弦信号sin、方波信号square、周期脉冲信号pulse。所有信号的幅值为
21、1。第31页/共68页任意输入的系统响应函数lsim()(4/10)Matlab问题问题3-5 试在Matlab中计算如下系统在0,10s内周期为3s的单位方波输入下的状态响应。Matlab程序程序m3-5如下。A=0 1;-2-3;B=0;1;C=;D=;x0=1;2;sys=ss(A,B,C,D);u t=gensig(square,3,10,0.1)y,t,x=lsim(sys,u,t,x0)plot(t,u,t,x);%产生周期为3s,时间为10s,采样周期为0.1s的方波信号%计算系统在输入序列u下的响应%将输入和状态响应绘于一张图内 第32页/共68页任意输入的系统响应函数lsim
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Matlab 问题 状态方程
限制150内