现代控制理论控实验报告.docx
《现代控制理论控实验报告.docx》由会员分享,可在线阅读,更多相关《现代控制理论控实验报告.docx(36页珍藏版)》请在冰点文库上搜索。
现代控制理论控实验报告
实验一MATLAB控制工具箱的应用及线性系统的运动分析
实验日期2013年5月21日成绩:
______
批阅教师签字
1.实验目的
⑴学习掌握MATLAB控制工具箱中的基本命令
⑵掌握线性系统的运动分析方法
2.实验环境
MATLAB6.5
3.实验内容、源程序代码、实验数据及结果分析
⑴自选控制对象模型,应用以下命令,并写出结果
1)step,damp,pzmap,rlocus,rlocfind,bode,margin,nyquist
2)tf2ss,ss2tf,tf2zp,zp2ss
3)ss2ss,Jordan,canon,eig
实现如下:
1)①step单位阶跃响应
当输入为单位阶跃信号时,系统的输出为单位阶跃响应。
其调用格式为:
[y,x,t]=step(num,den,t)或step(num,den)
例1:
求系统传递函数为W
=
的单位阶跃响应
num=[1];den=[10.51];
sys=tf(num,den);
step(sys)
grid;%绘制表格
xlabel('t');ylabel('y');
title('单位阶跃响应');
②damp返回系统特征值、衰减与频(借用例1)
num=[1];den=[10.51];
sys=tf(num,den);
damp(sys)
其输出结果为:
EigenvalueDampingFreq.(rad/s)
-2.50e-001+9.68e-001i2.50e-0011.00e+000
-2.50e-001-9.68e-001i2.50e-0011.00e+000
③pzmap绘制系统零极点图
其调用格式为:
[p,z]=pzmap(sys)绘图并返回极点p,零点z
或者pzmap(sys)直接绘图
④rlocus绘制系统根轨迹
例2:
给定系统G
=
绘制零极点图
程序如下:
num=[1213];den=[10.521];
sys=tf(num,den);
[p,z]=pzmap(sys)
rlocus(sys);
title('系统闭环根轨迹');
>>p=0+1.4142i>>z=-2.1746
0-1.4142i0.0873+1.1713i
-0.50000.0873-1.1713i
⑤rlocusfind计算与根轨迹上极点相应的根轨迹增益
例3:
已知一个单位负反馈系统开环传递函数为:
W
=
试绘制闭环系统的根轨迹;在根轨迹上任选一点,并计算该点的增益k及其所有极点的位置
num=1;den=conv([10],conv([0.51],[41]));
sys=tf(num,den);
rlocus(sys);
[k,poles]=rlocfind(sys)
title('系统闭环根轨迹')
>>Selectapointinthegraphicswindow(用光标选)
selected_point=-0.7583-5.1056i
k=278.3081
poles=-6.01411.8821+4.4267i1.8821-4.4267i
⑥bode绘制给定系统的伯德图(以例3为例)
num=1;
den=conv([10],conv([0.51],[41]));
sys=tf(num,den);
bode(sys);
gridon;
title('BodeDiagram');
xlabel('Frequency(rad/sec)');
ylabel('GaindB');
⑦margin求解稳定裕度(以例1为例)
num=[1];den=[10.51];
sys=tf(num,den);
[Gm,Pm,Wcg,Wcp]=margin(num,den);
>>Gm=InfPm=41.4091Wcg=InfWcp=1.3229
返回的变量对(Gm,Wcg)为系统的增益裕度的值和与之对应的频率
而(Pm,Wcp)为系统的相位裕度的值和与之对应的频率
⑧nyquist绘制奈氏曲线(以例1为例)
num=[1];den=[10.51];
nyquist(num,den);
2)
①ss2tf将状态空间模型转换成传递函数模型
A=[010;001;-4-3-2];B=[1;3;-6];
C=[100];D=0;
[num,den]=ss2tf(A,B,C,D,1)
>>num=01.00005.00003.0000
den=1.00002.00003.00004.0000
②tf2ss将传递函数转换成状态空间模型
num=[153];den=[1234];
[A,B,C,D]=tf2ss(num,den)
>>A=-2-3-4B=1C=153D=0
1000
0100
③tf2zp将传递函数转换成零极点增益模型
num=[1213];den=[10.521];
[z,p,k]=tf2zp(num,den)
>>z=-2.1746p=0+1.4142ik=1
0.0873+1.1713i0-1.4142i
0.0873-1.1713i-0.5000
④zp2ss将零极点增益模型转换成状态空间模型
z=[-2.17460.0873+1.1713i0.0873-1.1713i];
p=[0+1.4142i0-1.4142i-0.5000];
k=1;
[A,B,C,D]=zp2ss(z,p,k)
>>A=-0.500000B=1
1.67460-1.41420
01.414200
C=1.6746-0.1746-0.4387D=1
3)
①ss2ss求状态空间模型的坐标
A=[010;001;-5-3-2];B=[0;0;1];
C=[1.510.5];D=0;
T=eye(3,3);
sys=ss(A,B,C,D);
SYS=ss2ss(sys,T)
>>a=x1x2x3b=u1
x1010x10
x2001x20
x3-5-3-2x31
c=x1x2x3d=u1
y11.510.5y10
Continuous-timemodel.
②Jordan约旦标准型eig求矩阵的特征值
A=sym(gallery(3));%构造3x3的随即矩阵
E=eig(A)%求A的特征值
J=jordan(A)%求A的约旦标准型
>>E=[1]J=[1,0,0]
[2][0,2,0]
[3][0,0,3]
从运算结果可知A的特征值即为A的约旦标准型对角数值
③canon将状态方程化成规范性
Matlab提供的canon函数只有两种模式即model和companion,model为约旦标准型
A=[010;001;-5-3-2];B=[0;0;1];
C=[1.510.5];D=0;
sys=ss(A,B,C,D);
[Gt,P]=canon(sys,'model')
>>a=x1x2x3b=u1
x1-0.078131.6450x10.5106
x2-1.645-0.078130x2-0.6646
x300-1.844x30.6859
c=x1x2x3d=u1
y1-0.06476-0.45170.3395y10
Continuous-timemodel.
P=-1.9420-0.11190.5106
-1.6442-2.1171-0.6646
1.86020.10720.6859
⑵掌握线性系统的运动分析方法
1)已知A=
,求e
。
(用三种方法求解)
①状态转移矩阵的指数矩阵计算法
a=[01;-2-3];
symst;
eat1=expm(a*t)
>>eat1=[-exp(-2*t)+2*exp(-t),exp(-t)-exp(-2*t)]
[-2*exp(-t)+2*exp(-2*t),2*exp(-2*t)-exp(-t)]
②状态转移矩阵的拉氏变换计算法
a=[01;-2-3];
symsst;
G=inv(s*eye(size(a))-a)
eat2=ilaplace(G)
>>G=[(s+3)/(s^2+3*s+2),1/(s^2+3*s+2)]
[-2/(s^2+3*s+2),s/(s^2+3*s+2)]
eat2=[-exp(-2*t)+2*exp(-t),exp(-t)-exp(-2*t)]
[-2*exp(-t)+2*exp(-2*t),2*exp(-2*t)-exp(-t)]
③非奇异变换法-计算特征值及特征向量矩阵
a=[01;-2-3];
symst;
[P,D]=eig(a);
Q=inv(P);eat3=P*expm(D*t)*Q
>>eat3=[-exp(-2*t)+2*exp(-t),exp(-t)-exp(-2*t)]
[-2*exp(-t)+2*exp(-2*t),2*exp(-2*t)-exp(-t)]
2)利用MATLAB求解书上例2.8题,并画出状态响应和输出响应曲线,求解时域性能指标。
(加图标题、坐标轴标注及图标)
a=[-10;0-2];b=[1;1];
c=[1.50.5];d=0;
[num,den]=ss2tf(a,b,c,d);
sys=tf(num,den);
figure
(1);
[p.z]=pzmap(sys);
rlocus(sys);
grid;
title('系统根轨迹图');
x0=[2;3];
symsst;
G0=inv(s*eye(size(a))-a)
x1=ilaplace(G0)*x0
G1=inv(s*eye(size(a))-a)*b
x2=ilaplace(G1/s)
x=x1+x2
y=c*x
forI=1:
61;
tt=0.1*(I-1);
xt(:
I)=subs(x(:
),'t',tt);
yt(I)=subs(y,'t',tt);
end;
figure
(2);
plot(0:
60,[xt;yt]);
grid;
xlabel('t(s)');
ylabel('ampitude');
title('系统的状态响应(相交叉-下)和输出响应(叠加-上)')
>>G0=[1/(s+1),0]x1=[2*exp(-t)]
[0,1/(s+2)][3*exp(-2*t)]
G1=[1/(s+1)]x2=[1-exp(-t)]
[1/(s+2)][1/2-1/2*exp(-2*t)]
x=[exp(-t)+1]y=3/2*exp(-t)+7/4+5/4*exp(-2*t)
[5/2*exp(-2*t)+1/2]
3)利用MATLAB求解书上例2.12题,并画出状态响应和输出响应曲线。
(加图标题、坐标轴标注及图标)
g=[01;-0.16-1];h=[1;1];
G=ss(g);
x0=[1;-1];
symsst;
G0=inv(s*eye(size(g))-g)
x1=ilaplace(G0)*x0
G1=inv(s*eye(size(g))-g)*h
x2=ilaplace(G1/s)
x=x1+x2
y=c*x
forI=1:
61;
tt=0.1*(I-1);
xt(:
I)=subs(x(:
),'t',tt);
yt(I)=subs(y,'t',tt);
end;
plot(0:
60,[xt;yt]);
xlabel('t(s)');
ylabel('ampitude');
title('系统的状态响应和输出响应')
>>G0=[25*(s+1)/(25*s^2+25*s+4),25/(25*s^2+25*s+4)]
[-4/(25*s^2+25*s+4),25*s/(25*s^2+25*s+4)]
x1=[4/3*exp(-4/5*t)-1/3*exp(-1/5*t)]
[-16/15*exp(-4/5*t)+1/15*exp(-1/5*t)]
G1=[25*(s+1)/(25*s^2+25*s+4)+25/(25*s^2+25*s+4)]
[-4/(25*s^2+25*s+4)+25*s/(25*s^2+25*s+4)]
x2=[5/2*exp(-4/5*t)-15*exp(-1/5*t)+25/2]
[-2*exp(-4/5*t)+3*exp(-1/5*t)-1]
x=[23/6*exp(-4/5*t)-46/3*exp(-1/5*t)+25/2]
[-46/15*exp(-4/5*t)+46/15*exp(-1/5*t)-1]
y=253/60*exp(-4/5*t)-322/15*exp(-1/5*t)+73/4
4)
①P361.4
(2)已知系统的状态空间表达式为:
=
+
Y=
用MATLAB编程求系统的传递函数矩阵
A=[214;020;001];B=[10;34;21];C=[351];D=[00];
[num,den]=ss2tf(A,B,C,D,1)
>>num=020.0000-29.0000-13.0000
den=1-58-4
②P361.5(3)已知系统传递函数阵:
G(s)=
求系统的状态空间模型
num=[1422;3110];den=[1232];
[A,B,C,D]=tf2ss(num,den)
>>A=-2-3-2B=1C=2-10D=1
1000-5-8-63
0100
③P562.3(3)已知系统方成如下:
=
x+
uy=
x求输入和初值为以下值时的状态响应和输出响应:
u(t)=1(t),x(0)=
a=[01;-6-5];b=[1;0];c=[1.50.5];d=0;
G=ss(a,b,c,d);
x0=[1;1];
symsst;
G0=inv(s*eye(size(a))-a);
x1=ilaplace(G0)*x0
G1=inv(s*eye(size(a))-a)*b;
x2=ilaplace(G1/s)
x=x1+x2
y=c*x
forI=1:
61;
tt=0.1*(I-1);
xt(:
I)=subs(x(:
),'t',tt);
yt(I)=subs(y,'t',tt);
end;
plot(0:
60,[xt;yt]);
xlabel('t(s)');
ylabel('ampitude');
title('系统的状态响应和输出响应');
运行结果如下:
>>x1=[-3*exp(-3*t)+4*exp(-2*t)]
[-8*exp(-2*t)+9*exp(-3*t)]
x2=[2/3*exp(-3*t)-3/2*exp(-2*t)+5/6]
[-1+3*exp(-2*t)-2*exp(-3*t)]
x=[-7/3*exp(-3*t)+5/2*exp(-2*t)+5/6]
[-5*exp(-2*t)+7*exp(-3*t)-1]
y=5/4*exp(-2*t)+3/4
实验二系统的能空性、能观测性、稳定性分析及实现
实验日期2013年5月21日成绩:
______
批阅教师签字
1.实验目的
加深理解能观测性、能控性、稳定性、最小实现等概念。
掌握如何使用MATLAB进行以下分析和实现
⑴系统的能观测性、能控性分析;
⑵系统的稳定性分析;
⑶系统的最小实现。
2.实验环境
MATLAB6.5
3.实验内容、源程序代码、实验数据及结果分析
⑴能控性、能观测性及系统实现
(a)了解以下命令的功能,自选对象模型,进行运算,并写出结果。
gram,ctrb,obsv,lyap,ctrbf,obsvf,mineral
实现如下:
1gram
%利用gram矩阵判断系统的能控性和能观测性
a=[010;001;-6-11-6];b=[01;10;01];
c=[101;010];d=0;
G=ss(a,b,c,d);
wc=gram(G,'c'),nc=det(wc)
ifnc~=0,disp('Systemiscontrollable!
'),
elsedisp('Systemisuncontrollable!
'),
end
wo=gram(G,'o'),no=det(wo)
ifno~=0,disp('Systemisobservable!
'),
elsedisp('Systemisuncontrollable!
'),
end
运行结果:
>>wc=1.7000-0.5000-0.7000
-0.50000.7000-0.5000
-0.7000-0.50001.7000
nc=0.4800
Systemiscontrollable!
wo=1.21670.05000.0833
0.05001.22500.0500
0.08330.05000.0917
no=0.1253
Systemisobservable!
②ctrbobsv
%利用ctrb和obsv矩阵判断系统的能控性和能观测性
a=[010;001;-6-11-6];b=[01;10;01];
c=[101;010];d=0;
n=length(a)
qc=ctrb(a,b),nc=rank(qc)
ifn==nc,disp('Systemiscontrollable!
'),
elsedisp('Systemisuncontrollable!
'),
end
qo=obsv(a,c),no=rank(qo)
ifn==no,disp('Systemisobservable!
'),
elsedisp('Systemisuncontrollable!
'),
end
运行结果:
>>n=3
qc=011001
1001-11-12
01-11-126061
nc=3
Systemiscontrollable!
qo=101
010
-6-10-6
001
366026
-6-11-6
no=3
Systemisobservable!
③lyap
X=lyap(A,C)求解满足李雅普诺夫方程的对称矩阵X
其中A,C为给定矩阵,且C为对称矩阵。
A=[01;-0.5-1];
C=eye(2,2);
P=lyap(A,C)
>>P=2.22.2
2.22.2
④ctrbfobsvf
%能控性结构分解和能观测性结构分解
a=[00-1;10-3;01-3];
b=[1;1;0];c=[01-2];d=0;
[Ac,Bc,Cc,Tc,Kc]=ctrbf(a,b,c)
[Ao,Bo,Co,To,Ko]=obsvf(a,b,c)
运行结果:
>>Ac=-1.00000.0000-0.0000Bc=0
-2.1213-2.50000.86600
-1.2247-2.59810.5000-1.4142
Cc=1.73211.2247-0.7071
Tc=-0.57740.5774-0.5774Kc=110
0.4082-0.4082-0.8165
-0.7071-0.70710
Ao=-1.0000-1.3416-3.8341Bo=1.2247
0.0000-0.4000-0.7348-0.5477
00.4899-1.6000-0.4472
Co=00.0000-2.2361
To=0.40820.81650.4082Ko=110
-0.91290.36510.1826
0-0.44720.8944
⑤mineral最小实现
num=[22];den=[16116];
G=tf(num,den);Gs=ss(G);
Gm=minreal(Gs);
Am=Gm.a
Bm=Gm.b
Cm=Gm.c
Dm=Gm.d
运行结果:
>>1stateremoved.
Am=2.0121-5.7764Bm=0.1212
3.4812-7.0121-0.4848
Cm=0.50000.1250Dm=0
(b)已知连续系统的传递函数模型G(s)=
,当a分别取-1、0、1时,判别系统的能控性与能观测性
程序如下:
①a=-1
num=[1-1];den=[1102718];
[A,B,C,D]=tf2ss(num,den)
n=length(A)
Qc=ctrb(A,B)
nc=rank(Qc)
ifn==nc,disp('Systemiscontrollable!
'),
elsedisp('Systemisuncontrollable!
'),
end
Qo=obsv(A,C)
no=rank(Qo)
ifn==no,disp('Systemisobservable!
'),
elsedisp('Systemisunobservable!
'),
end
运行结果:
>>A=-10-27-18B=1C=01-1D=