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

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

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

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

第一章 状态空间表达式

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

num=[10,-10];
den=[1,4,3,0];
w=tf(num,den);
se=ss(w)
[T,J]=jordan(A)

对应习题1-6

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

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

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

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 能控性和能观性判定

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 能控标准型

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 能观标准型

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 传递函数转能控或能观标准型

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 李雅普诺夫定理第一方法

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 李雅普诺夫定理第二方法

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

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

第五章 线性系统综合

1 极点配置

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

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

现代控制理论习题解答与Matlab程序示例的更多相关文章

  1. [zz]求一维序列的信息熵(香浓熵)的matlab程序实例

    对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵.    但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的, ...

  2. 【matlab】MATLAB程序调试方法和过程

    3.8  MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...

  3. DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)

            本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com         注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...

  4. 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答

    今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答.笔者在做这些题目时遇到非常多困难,当我在网上寻找答案时却找不到,而林 ...

  5. 《C++编程思想》第四章 初始化与清除(原书代码+习题+解答)

    相关代码: 1. #include <stdio.h> class tree { int height; public: tree(int initialHeight); ~tree(); ...

  6. 《C++Primer》第五版习题解答--第四章【学习笔记】

    [C++Primer]第五版习题解答--第四章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/11 第四章:表达式 练习4. ...

  7. 条件随机场matlab程序下载

    19:44:23 1 http://www.cs.ubc.ca/~murphyk/Software/CRF/crf.html matlab程序包: 该条件随机场程序(CRF)是针对语句进行标注,mat ...

  8. (搬运)《算法导论》习题解答 Chapter 22.1-1(入度和出度)

    (搬运)<算法导论>习题解答 Chapter 22.1-1(入度和出度) 思路:遍历邻接列表即可; 伪代码: for u 属于 Vertex for v属于 Adj[u] outdegre ...

  9. C/C++程序通过动态链接库调用MATLAB程序

    C/C++程序通过动态链接库调用MATLAB程序 1 MATLAB编译器设置 需要设定对应的C++编译器才能编译.m文件生成可供C++调用的库文件. 在MATLAB命令行输入:mex –setup:然 ...

随机推荐

  1. ajax中基本参数应用

    $(function () { $("#verificationCodeBtn").click(function () { $("#verificationCodeIma ...

  2. Javascript面向对象编程(一):封装

    Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...

  3. git reset揭秘

    一.命令 首先,让我们来解释几个定义.   HEAD(头)     指向当前branch最顶端的一个commit,该分支上一次commit后的节点   Index(索引)     The index, ...

  4. Lucene初体验——Hello Word实现

    1.创建索引 /** * 建立索引 */ public void index(){ IndexWriter writer=null; try { //1.创建Directory //Directory ...

  5. Emacs Python 自动补全--Elpy

    安装方法: 首先,安装一些依赖包: # Either of these pip install rope pip install jedi # flake8 用来检查语法错误 pip install ...

  6. Python3 File 方法

    Python3 File(文件) 方法 file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行 ...

  7. 深度解读GoogleNet之Inception V1

    GoogleNet设计的目的 GoogleNet设计的初衷是为了提高在网络里面的计算资源的利用率. Motivation 网络越大,意味着网络的参数较多,尤其当数据集很小的时候,网络更容易发生过拟合. ...

  8. cassandra 常见问题

    摘要 本文主要介绍在部署cassandra集群以及使用cassandra过程中遇到的一些问题. 文章只发布在CSDN 和个人站点 更多nosql文章可以访问stone fang 个人主页 正文 Q1: ...

  9. JVM远程DEBUG(JPDA )

    原理 1. JPDA简介 JPDA(Java Platform Debugger Architecture)为Java平台上的调试器定义了一个标准的体系结构.该体系结构包括3个主要组成部分:JVM T ...

  10. hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)

    数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能. 而hive中间结果 ...