线性系统状态空间分析与运动解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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('')