求解系统的状态方程教学文案.docx

上传人:b****6 文档编号:3389012 上传时间:2022-11-22 格式:DOCX 页数:21 大小:497.10KB
下载 相关 举报
求解系统的状态方程教学文案.docx_第1页
第1页 / 共21页
求解系统的状态方程教学文案.docx_第2页
第2页 / 共21页
求解系统的状态方程教学文案.docx_第3页
第3页 / 共21页
求解系统的状态方程教学文案.docx_第4页
第4页 / 共21页
求解系统的状态方程教学文案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

求解系统的状态方程教学文案.docx

《求解系统的状态方程教学文案.docx》由会员分享,可在线阅读,更多相关《求解系统的状态方程教学文案.docx(21页珍藏版)》请在冰豆网上搜索。

求解系统的状态方程教学文案.docx

求解系统的状态方程教学文案

 

求解系统的状态方程

求解系统的状态方程

一、实验设备

PC计算机,MATLAB软件,控制理论实验台

二、实验目的

(1)掌握状态转移矩阵的概念。

学会用MATLAB求解状态转移矩阵

(2)学习系统齐次、非齐次状态方程求解的方法,计算矩阵指数,求状态响应;

(3)通过编程、上机调试,掌握求解系统状态方程的方法,学会绘制输出响应和状态响应曲线;

(4)掌握利用MATLAB导出连续状态空间模型的离散化模型的方法。

三、实验原理及相关基础

(1)参考教材P99~101“3.8利用MATLAB求解系统的状态方程”

(2)MATLAB现代控制理论仿真实验基础

(3)控制理论实验台使用指导

4、实验内容

(1)求下列系统矩阵A对应的状态转移矩阵

(a)

(b)

代码:

symslambda

A=[lambda00;0lambda0;00lambda];symst;f=expm(A*t)

(c)

代码:

symst;symslambda;A=[lambda000;0lambda10;00lambda1;000lambda];f=expm(A*t)

(2)已知系统

a)用MATLAB求状态方程的解析解。

选择时间向量t,绘制系统的状态响应曲线。

观察并记录这些曲线。

(1)

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

u=1;

symst;

f=expm(A*t);%状态转移矩阵

x0=0;

s1=f*B*u;

s2=int(s1,t,0,t)%状态方程解析解

 

状态曲线:

(2)A=[01;-2-3];

symst;

f=expm(A*t);

X0=[1;0];

t=[0:

0.5:

10];

fori=1:

length(t);

g(i)=double(subs(f

(1),t(i)));

end

plot(t,g)

(3)状态转移矩阵

symslambda

A=[lambda00;0lambda0;00lambda];

symst

f=expm(A*t)

 

b)计算系统在初始状态作用下状态响应和输出响应的数值解(用函数initial()),绘制系统的状态响应曲线和输出响应曲线。

观察并记录这些响应曲线,然后将这一状态响应曲线与a)中状态响应曲线进行比较。

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

G=ss(A,B,C,D);

t=[0:

0.5:

10];

x0=[1;0]

[y0,t,x0]=initial(G,x0,t);

plot(t,x0,'-',t,y0,'-')

c)根据b)中所得的状态响应的数值解,绘制系统的状态轨迹(用命令plot(x(:

1),x(:

2)))。

记录系统状态转移的过程,结合a)和b)中的状态响应曲线分析这一过程。

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

t=[0:

0.01:

10];

x0=[1;0];

G=ss(A,B,C,D)

[y,t,x]=initial(G,x0,t);

plot(x(:

1),x(:

2))

 

2)令初始状态为零,输入为u(t)=1(t).

a)用MATLAB求状态方程的解析解。

选择时间向量t,绘制系统的状态响应曲线。

观察并记录这些曲线。

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

G=ss(A,B,C,D);

[y,t,x]=step(G);

plot(t,x)

b)计算系统在初始状态作用下状态响应和输出响应的数值解,绘制系统的状态响应曲线和输出响应曲线。

观察并记录这些响应曲线,然后将这一状态响应曲线与a).中状态响应曲线进行比较。

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

G=ss(A,B,C,D);

G=ss(A,B,C,D);

t=[0:

0.5:

10];

x0=[1;-1];

[y0,t,x0]=initial(G,x0,t);

plot(t,x0,'-',t,y0,'-')

c)根据b)中所得的状态响应的数值解,绘制系统的状态轨迹。

记录系统状态转移的过程,结合a)和b)中的状态响应曲线分析这一过程。

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

t=[0:

0.5:

10];

G=ss(A,B,C,D);

x0=[00];

[y0,t,x0]=initial(G,x0,t);

plot(t,x0,'-',t,y0,'-')

绘制系统的状态响应曲线、输出响应曲线和状态轨迹。

观察和分析这些响应曲线和状态轨迹是否是

(1)和

(2)中的响应曲线和状态轨迹的叠加。

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

t=[0:

0.01:

10];

x0=[1-1];

G=ss(A,B,C,D);

[y,t,x]=initial(G,x0,t);

plot(t,x)

4)令初始状态为零,输入为u(t)=3sin(5t)。

计算状态响应和输出响应的数值解(用函数

lsim()),并绘制系统的状态响应曲线、输出响应曲线和状态轨迹。

代码:

A=[01;-2-3];

B=[3;0];

C=[11];

D=[0];

t=[0:

0.01:

10];

u=3*sin(5*t);

G=ss(A,B,C,D);

[y,t,x]=lsim(G,u,t);

plot(t,x)

 

(3)已知系统

1)当输入为u(t)=

(t)时,用函数initial()和impulse()求解系统的状态响应和输出响应的

数值解,并绘制系统的状态响应曲线、输出响应曲线和状态轨迹。

状态响应:

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

t=[0:

0.5:

10];

G=ss(A,B,C,D);

x0=[1,0,-1];

[y,t,x]=initial(G,x0,t);

u=ones(size(t));

plot(t,x,t,y)

输出响应:

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

t=[0:

0.01:

10];

u=ones(size(t));

G=ss(A,B,C,D);

[y,t,x]=lsim(G,u,t);

plot(t,x)

2)当输入为u(t)=1(t)时,用函数initial()和step()求解系统的状态响应和输出响应的数

值解,并绘制系统的状态响应曲线、输出响应曲线和状态轨迹。

状态响应

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

t=[0:

0.5:

10];

G=ss(A,B,C,D);

x0=[1,0,-1];

[y,t,x]=initial(G,x0,t);

u=step(G);

plot(t,x,t,y)

输出响应:

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

G=ss(A,B,C,D);

[y,t,x]=step(G);

plot(t,x)

3)当输入为u(t)=t时,用函数initial()和lsim()求解系统的状态响应和输出响应的数值

解,并绘制系统的状态响应曲线、输出响应曲线和状态轨迹。

状态响应

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

t=[0:

0.5:

10];

G=ss(A,B,C,D);

x0=[1,0,-1];

[y,t,x]=initial(G,x0,t);

u=t;

plot(t,x,t,y)

输出响应

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

t=[0:

0.01:

10];

u=t;

G=ss(A,B,C,D);

[y,t,x]=lsim(G,u,t);

plot(t,x)

4)当输入为

时,用函数initial()和lsim()求解系统的状态响应和输出响应的数值解,并绘制系统的状态响应曲线、输出响应曲线和状态轨迹.

状态响应

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

t=[0:

0.5:

10];

G=ss(A,B,C,D);

x0=[1,0,-1];

[y,t,x]=initial(G,x0,t);

u=sin(t);

plot(t,x,t,y)

输出响应

A=[0,1,0;0,0,1;-6,-11,-6];

B=[0;0;1];

C=[6,0,0];

D=0;

t=[0:

0.01:

10];

u=sin(t);

G=ss(A,B,C,D);

[y,t,x]=lsim(G,u,t);

plot(t,x)

(4)已知一个连续系统的状态方程是

若取采样周期秒0.05T=

1)试求相应的离散化状态空间模型;

代码:

symsT;

A=[01;-25-4];

B=[0;1];

[Gz,Hz]=c2d(A,B,T)

G=

[exp(-2*T-21^(1/2)*T*i)/2+exp(-2*T+21^(1/2)*T*i)/2+(21^(1/2)*exp(-2*T-21^(1/2)*T*i)*i)/21-(21^(1/2)*exp(-2*T+21^(1/2)*T*i)*i)/21,(21^(1/2)*exp(-2*T-21^(1/2)*T*i)*i)/42-(21^(1/2)*exp(-2*T+21^(1/2)*T*i)*i)/42]

[-(21^(1/2)*exp(-2*T-21^(1/2)*T*i)*25*i)/42+(21^(1/2)*exp(-2*T+21^(1/2)*T*i)*25*i)/42,exp(-2*T-21^(1/2)*T*i)/2+exp(-2*T+21^(1/2)*T*i)/2-(21^(1/2)*exp(-2*T-21^(1/2)*T*i)*i)/21+(21^(1/2)*exp(-2*T+21^(1/2)*T*i)*i)/21]

H=

1/25-exp(-2*T+21^(1/2)*T*i)/50-(21^(1/2)*exp(-2*T-21^(1/2)*T*i)*i)/525+(21^(1/2)*exp(-2*T+21^(1/2)*T*i)*i)/525-exp(-2*T-21^(1/2)*T*i)/50

(21^(1/2)*exp(-2*T-21^(1/2)*T*i)*i)/42-(21^(1/2)*exp(-2*T+21^(1/2)*T*i)*i)/42

2)分析不同采样周期下,离散化状态空间模型的结果。

A=[01;-25-4];

B=[0;1];

[Gz,Hz]=c2d(A,B,0.05)

Gz=

0.97090.0448

-1.12120.7915

 

Hz=

0.0012

0.0448

5、实验心得:

本次实验是求解系统的状态方程。

并且要通过编入代码、调试,掌握传递函数与状态空间表达式之间相互转换的方法,系统状态空间表达式与传递函数相互转换方法。

同时也掌握了状态空间表达式的相似变换和如何将状态空间表达式转换为对角标准型、约当标准型、能控标准型和能观测标准型的方法。

通过本次试验我初步学会了使用matlab解决基本的线带控制问题,对书本上的知识有了根深的理解。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1