现代控制理论习题解答与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. javac编译原理

    javac编译器的作用就是将符合java语言规范的源代码转化成符合java虚拟机规范的java字节码 经历:词法分析器->语法分析器->语义分析器->编译字节码 四个过程生成字节码文 ...

  2. DecimalFormat(用于格式化十进制数字)

    1概念: DecimalFormat 是 NumberFormat 的一个具体子类,用于格式化十进制数字.该类设计有各种功能,使其能够分析和格式化任意语言环境中的数,包括对西方语言.阿拉伯语和印度语数 ...

  3. DDL/DML/DCL区别概述

    DDL DDL的概述 DDL(Data Definition Language 数据定义语言)用于操作对象和对象的属性,这种对象包括数据库本身,以及数据库对象,像:表.视图等等,DDL对这些对象和属性 ...

  4. jmeter录制APP时不能登录的问题

    问题描述: 录制APP时,其他一切挺顺利的,但在登录的时候提示"服务器发生未知错误,请稍后重试".一开始以为是接口问题,用python脚本调用了下,是可以登录的,排除接口问题.百度 ...

  5. AIX 命令

    1,[ctrl]+h 删除命令 2, set -o emacs后: [ctrl]+p 看上条命令 [ctrl]+n 看下条命令 两次[esc] 自动补全 3, set -o vi 后,可以按照vi编辑 ...

  6. Tarjan笔记1

    Tarjan 2822 爱在心中 ** 时间限制: 1 s ** 空间限制: 128000 KB ** 题目等级 : 钻石 Diamond 题解 题目描述 Description"每个人都拥 ...

  7. linux系统性能监控--CPU利用率

    在对系统的方法化分析中,首要且最基本的工具之一常常是对系统的 CPU利用率进行简单测量. Linux以及大多数基于 UNIX的操作系统都提供了一条命令来显示系统的平均负荷(loadaverage) . ...

  8. Android中软键盘弹出时底部菜单上移问题

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  9. Dynamics CRM 安装CRM程序系统检查界面报未将对象引用设置到对象的实例的解决方法

    今天在安装CRM的时候,在系统检查阶段遇到了如下的错误,咋看之下直接是懵逼的 但不要着急,界面上有两个按钮,一个是详细信息,一个是帮助,详细信息不用看了就那一行字也看不出什么,咱们点下帮助看看,定位到 ...

  10. springMVC源码分析--异常处理机制HandlerExceptionResolver简单示例(一)

    springMVC对Controller执行过程中出现的异常提供了统一的处理机制,其实这种处理机制也简单,只要抛出的异常在DispatcherServlet中都会进行捕获,这样就可以统一的对异常进行处 ...