现代控制理论习题解答与Matlab程序示例
现代控制理论习题解答与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程序示例的更多相关文章
- [zz]求一维序列的信息熵(香浓熵)的matlab程序实例
对于一个二维信号,比如灰度图像,灰度值的范围是0-255,因此只要根据像素灰度值(0-255)出现的概率,就可以计算出信息熵. 但是,对于一个一维信号,比如说心电信号,数据值的范围并不是确定的, ...
- 【matlab】MATLAB程序调试方法和过程
3.8 MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...
- DirectX 11游戏编程学习笔记之8: 第6章Drawing in Direct3D(在Direct3D中绘制)(习题解答)
本文由哈利_蜘蛛侠原创,转载请注明出处.有问题欢迎联系2024958085@qq.com 注:我给的电子版是700多页,而实体书是800多页,所以我在提到相关概念的时候 ...
- 機器學習基石(Machine Learning Foundations) 机器学习基石 作业三 课后习题解答
今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作业三的习题解答.笔者在做这些题目时遇到非常多困难,当我在网上寻找答案时却找不到,而林 ...
- 《C++编程思想》第四章 初始化与清除(原书代码+习题+解答)
相关代码: 1. #include <stdio.h> class tree { int height; public: tree(int initialHeight); ~tree(); ...
- 《C++Primer》第五版习题解答--第四章【学习笔记】
[C++Primer]第五版习题解答--第四章[学习笔记] ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/11 第四章:表达式 练习4. ...
- 条件随机场matlab程序下载
19:44:23 1 http://www.cs.ubc.ca/~murphyk/Software/CRF/crf.html matlab程序包: 该条件随机场程序(CRF)是针对语句进行标注,mat ...
- (搬运)《算法导论》习题解答 Chapter 22.1-1(入度和出度)
(搬运)<算法导论>习题解答 Chapter 22.1-1(入度和出度) 思路:遍历邻接列表即可; 伪代码: for u 属于 Vertex for v属于 Adj[u] outdegre ...
- C/C++程序通过动态链接库调用MATLAB程序
C/C++程序通过动态链接库调用MATLAB程序 1 MATLAB编译器设置 需要设定对应的C++编译器才能编译.m文件生成可供C++调用的库文件. 在MATLAB命令行输入:mex –setup:然 ...
随机推荐
- ajax中基本参数应用
$(function () { $("#verificationCodeBtn").click(function () { $("#verificationCodeIma ...
- Javascript面向对象编程(一):封装
Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP)语言,因为它的语法中没有class(类). 那么,如果 ...
- git reset揭秘
一.命令 首先,让我们来解释几个定义. HEAD(头) 指向当前branch最顶端的一个commit,该分支上一次commit后的节点 Index(索引) The index, ...
- Lucene初体验——Hello Word实现
1.创建索引 /** * 建立索引 */ public void index(){ IndexWriter writer=null; try { //1.创建Directory //Directory ...
- Emacs Python 自动补全--Elpy
安装方法: 首先,安装一些依赖包: # Either of these pip install rope pip install jedi # flake8 用来检查语法错误 pip install ...
- Python3 File 方法
Python3 File(文件) 方法 file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数: 序号 方法及描述 1 file.close() 关闭文件.关闭后文件不能再进行 ...
- 深度解读GoogleNet之Inception V1
GoogleNet设计的目的 GoogleNet设计的初衷是为了提高在网络里面的计算资源的利用率. Motivation 网络越大,意味着网络的参数较多,尤其当数据集很小的时候,网络更容易发生过拟合. ...
- cassandra 常见问题
摘要 本文主要介绍在部署cassandra集群以及使用cassandra过程中遇到的一些问题. 文章只发布在CSDN 和个人站点 更多nosql文章可以访问stone fang 个人主页 正文 Q1: ...
- JVM远程DEBUG(JPDA )
原理 1. JPDA简介 JPDA(Java Platform Debugger Architecture)为Java平台上的调试器定义了一个标准的体系结构.该体系结构包括3个主要组成部分:JVM T ...
- hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)
数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能. 而hive中间结果 ...