线性系统状态空间分析与运动解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【实验地点】课外(宿舍) 【实验目的】

1、学会利用MATLAB 实现离散系统传递函数模型的生成

2、学会利用MATLAB 将连续系统离散化 【实验设备与软件】

1、MATLAB/Simulink 数值分析软件

2、计算机一台 【实验原理】

1、求矩阵特征值和特征向量命令格式[V J]=eig (A ) Cv=eig(A)

说明:V 特征向量,J 是Jordan 型,cv 是特征值列向量 2、求运动的方法

(1)利用Laplace 逆变换----适合于连续/离散线性系统

采用ilaplace/iztrans 对传递函数求逆,这种方法一般是零输入情况下求响应。 (2)用连续(离散)状态转移矩阵表示系统解析解----适合于线性定常系统 对连续定常系统有:

假设初始时刻为零,LTI 系统的解析解为dt Bu e

e

x e t x t

At

At

At

⎰⎰+=0

)()0()(τ。若u (t )是单位

阶跃输入,则上述解可写成dtBu e

e x e t x t

At

At At ⎰⎰+=0

)()0()(τ。进一步简化为:

Bu A Bu A x e t x At 11))0(()(---+=

对离散线性定常系统有:

∑---+

=1

1

)()0()(k i k

k

i Hu G x G k x

(3)状态方程的数值分析方法----适合于连续线性系统和非线性系统

采用直接数值积分很容易的处理各种定常/时变和线性/非线性系统。有很多数值积分方法,其中有一类预测-修正数值积分方法+自适应步长调整的算法比较有效。在MATLAB/Simulink 中包含的多种有效的、适用于不同类型的ODE 求解算法,典型的是Runge-Ktuta 算法,其通常使用如下的函数格式:

[t,x]=ode45(odefun,[ti,tf],x0,options)----采用四阶、五阶Runge-Ktuta 算法 [t,x]=ode23(odefun,[ti,tf],x0,options)----采用二阶、三阶Runge-Ktuta 算法 说明:a.这两个函数是求解非刚性常微分方程的函数。

b.参数options 为积分的误差设置,取值为相对误差‘reltol ’和绝对误差‘abstol ’;[ti,tf]求解的时间范围;x0是初值是初值向量;[t,x]是解。

(4)利用CotrolToolBox 的离散化求解函数----适合于TLI 系统 用step ()/impulse()函数求取阶跃输入/冲激输入时系统的状态响应: 当系统G 是连续的情况下:

调用[y,t,x]=step/impulse(G )会自动对连续系统G 选取采样时间范围和周期;

调用[y,t,x]=step/impulse(G ,ti:Ts:tf)由用户自己定义对连续系统G 的样时间范围和周期; 当系统G 是离散的情况下:

调用[y,t,x]=step/impulse(G )会按离散系统G 给出的采样周期计算;

调用[y,t,x]=step/impulse(G ,ti:Ts:tf)是Ts 必须与离散系统G 的采样时间范围和周期一致。 另外lsim()函数调用格式:[y,x,t]=lsim(G,u,ti,TS,tf,x0) 零输入响应调用函数initial (),格式:[y,x,t]=(G,x0) (5)利用simulink 环境求取响应----适用于所有系统求取响应

使用simulink 求取线性或非线性系统的响应,调用格式如下:

[t,x,y]=sim(‘XX.mdl’,ti:Ts:tf,options,u)

【实验内容】

已知线性系统:[])

(201)()

(2

10)(404040202119201921)(t x t y t u t x t x +-----•

已知线性系统

1、利用Matlab 求零状态下的阶跃响应(包括状态和输出),生成两幅图:第一幅绘制各状态响应曲线并标注;第二幅绘制输出响应曲线。

状态响应曲线:

A=[-21 19 -20;19 -21 20;40 -40 -40]; B=[0;1;2]; C=[1 0 2];

D=[0]; %输入状态空间模型各矩阵,若没有相应值,可赋空矩阵 X0=[0;0;0]; % 输入初始状态 sys=ss(A,B,C,D); %构造传递函数

[y,x,t]=step(sys); % 绘以时间为横坐标的状态响应曲线图 plot(t,x); grid;

title('状态响应曲线') 输出响应程序:

A=[-21 19 -20;19 -21 20;40 -40 -40]; B=[0;1;2]; C=[1 0 2]; D=0; X0=[0;0;0]

[num,den]=ss2tf(A,B,C,D,1); sys=tf(num,den); step(sys) grid

title('输出响应曲线')

图一(状态响应曲线)图二(输出响应曲线)

2、利用Matlab求零状态下的冲激响应(包括状态和输出),生成两幅图:第一幅绘制各状态响应曲线并标注;第二幅绘制输出响应曲线。

状态响应曲线程序:

A=[-21 19 -20;19 -21 20;40 -40 -40];

B=[0;1;2];

C=[1 0 2];

D=[]; %输入状态空间模型各矩阵,若没有相应值,可赋空矩阵

x0=[0;0;0]; % 输入初始状态

sys=ss(A,B,C,D); %构造传递函数

[y,x,t]= impulse(sys);

plot(t,x);

grid;

title('状态响应曲线')

输出响应曲线程序:

A=[-21 19 -20;19 -21 20;40 -40 -40];

B=[0;1;2];

C=[1 0 2];

D=0;

X0=[0;0;0]

[num,den]=ss2tf(A,B,C,D,1);

sys=tf(num,den);

impulse(sys);

grid;

title('')

相关文档
最新文档