前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >现代控制理论习题解答与Matlab程序示例

现代控制理论习题解答与Matlab程序示例

作者头像
zhangrelay
发布2019-01-23 10:53:39
1.5K0
发布2019-01-23 10:53:39
举报

现代控制理论习题解答与Matlab程序示例

现代控制理论 第三版 课后习题参考解答:

http://download.csdn.net/detail/zhangrelay/9544934

掌握这本习题集,满分妥妥的。

下面给出部分书后习题的Matlab方法求解:

第一章 状态空间表达式

1 传递函数转为状态空间表达式和约旦标准型

代码语言:javascript
复制
num=[10,-10];
den=[1,4,3,0];
w=tf(num,den);
se=ss(w)
[T,J]=jordan(A)

对应习题1-6

2 状态空间表达式转为传递函数

代码语言:javascript
复制
A=[0,1,0;-2,-3,0;-1,1,-3];
B=[0;1;2];
C=[0,0,1];
D=0;
se=ss(A,B,C,D);
w=tf(se)

对应习题1-7

第二章 状态空间表达式的解

代码语言:javascript
复制
A=[0,1;0,0];
B=[0;1];
C=[1,0];
D=0;
se=ss(A,B,C,D);
[y,t,x]=step(se);
figure(1);
plot(t,x);
figure(2);
plot(t,y);

对应习题2-6

第三章 能控性和能观性

1 能控性和能观性判定

代码语言:javascript
复制
A=[-3,1;1,-3];
B=[1,1;1,1];
C=[1,1;1,-1];
M=[B,A*B];
N=[C;C*A];
n=length(A);
rank(M)
if rank(M)==n
    disp('系统可控')
else
    disp('系统不可控')
end
rank(N)
if rank(N)==n
    disp('系统可观')
else
    disp('系统不可观')
end
[T,J]=jordan(A);
T'*B
C*T

对应习题3-2

2 能控标准型

代码语言:javascript
复制
A=[1 -2;3 4];
B=[1;1];
C=[0 0];
D=0;
G=ss(A,B,C,D);
M=[B,A*B];
n=length(A);
rank(M)
if rank(M)==n
    disp('系统可控')
else
    disp('系统不可控')
end
Qc=ctrb(A,B);
Cm=[0 1]*inv(Qc);
Cm2=inv([Cm;Cm*A]);
sysc=ss2ss(G,inv(Cm2))

对应习题3-7

3 能观标准型

代码语言:javascript
复制
A=[1,-1;1,1];
B=[2;1];
C=[-1 1];
D=0;
G=ss(A,B,C,D);
M=[B,A*B];
N=[C;C*A];
n=length(A);
rank(M)
if rank(M)==n
    disp('系统可控')
else
    disp('系统不可控')
end
rank(N)
if rank(N)==n
    disp('系统可观')
else
    disp('系统不可观')
end
Qc=ctrb(A,B);
Cm=[0 1]*inv(Qc);
Cm2=inv([Cm;Cm*A]);
sysc=ss2ss(G,inv(Cm2))
Qo=obsv(A,C);
Om=inv(Qo)*[0;1];
Om2=[Om A*Om];
syso=ss2ss(G,inv(Om2))

对应习题3-8

4 传递函数转能控或能观标准型

代码语言:javascript
复制
num=[1,6,8];
den=[1,4,3];
[A,B,C,D]=tf2ss(num,den);
G=ss(A,B,C,D);
M=[B,A*B];
N=[C;C*A];
n=length(A);
rank(M)
if rank(M)==n
    disp('系统可控')
else
    disp('系统不可控')
end
rank(N)
if rank(N)==n
    disp('系统可观')
else
    disp('系统不可观')
end
Qc=ctrb(A,B);
Cm=[0 1]*inv(Qc);
Cm2=inv([Cm;Cm*A]);
sysc=ss2ss(G,inv(Cm2))
Qo=obsv(A,C);
Om=inv(Qo)*[0;1];
Om2=[Om A*Om];
syso=ss2ss(G,inv(Om2))

对应习题3-9

第四章 李雅普诺夫方法和稳定性

1 李雅普诺夫定理第一方法

代码语言:javascript
复制
A=[-3 -6 -2 -1;1 0 0 0;0 1 0 0;0 0 1 0];
B=[1;0;0;0];
C=[0 0 1 1];
D=[0];
flag=0;
[z,p,k]=ss2zp(A,B,C,D,1);
disp('系统零点,极点和增益为:');
z
p
k
n=length(A);
for i=1:n
    if real(p(i))>0
        flag=1;
    end
end
if flag==1
    disp('系统不稳定');
else
    disp('系统稳定');
end

通过极点判定系统是否稳定

2 李雅普诺夫定理第二方法

代码语言:javascript
复制
A=[-3 -6 -2 -1;1 0 0 0;0 1 0 0;0 0 1 0];
Q=eye(4,4);
P=lyap(A,Q);
flag=0;
n=length(A);
for i=1:n
    det(P(1:i,1:i))
    if(det(P(1:i,1:i))<=0)
        flag=1;
    end
end
if flag==1
    disp('系统不稳定');
else
    disp('系统稳定');
end
代码语言:javascript
复制

通过P是否正定判定系统是否稳定。

第五章 线性系统综合

1 极点配置

代码语言:javascript
复制
A=[0 1 0;0 0 1;0 -2 -3];
B=[0;0;1];
P=[-2 -1+1i -1-1i];
M=[B,A*B,A*A*B];
n=length(A);
rank(M)
if rank(M)==n
    disp('系统可控')
    disp('状态反馈')
    K=acker(A,B,P)
else
    disp('系统不可控')
    [Ac,Bc,Cc,T,K]=ctrbf(A,B,C)
end    
Ac=A-B*K
disp('配置后极点')
eig(Ac)

对应例题5-2

代码语言:javascript
复制
num=[1 1 -2];
den=[1 2 -5 -6];
[A,B,C,D]=tf2ss(num,den)
P=[-2 -2 -3];
M=[B,A*B,A*A*B];
n=length(A);
rank(M)
if rank(M)==n
    disp('系统可控')
    disp('状态反馈')
    K=acker(A,B,P)
else
    disp('系统不可控')
    [Ac,Bc,Cc,T,K]=ctrbf(A,B,C)
end    
Ac=A-B*K
disp('配置后极点')
eig(Ac)

对应习题5-4

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年06月09日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 现代控制理论习题解答与Matlab程序示例
    • 第一章 状态空间表达式
      • 1 传递函数转为状态空间表达式和约旦标准型
      • 2 状态空间表达式转为传递函数
    • 第二章 状态空间表达式的解
      • 第三章 能控性和能观性
        • 1 能控性和能观性判定
        • 2 能控标准型
        • 3 能观标准型
        • 4 传递函数转能控或能观标准型
      • 第四章 李雅普诺夫方法和稳定性
        • 1 李雅普诺夫定理第一方法
        • 2 李雅普诺夫定理第二方法
      • 第五章 线性系统综合
        • 1 极点配置
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档