计算机仿真实验报告
目 录
实验一 Matlab 语言编程 ............................................................................................................... 1
一. 二.
实验目的 . ...................................................................................................................... 1 具体实验内容、步骤、要求: . .................................................................................. 1
实验二 数值积分算法及函数调用练习 . ........................................................................................ 3
一. 二.
实验目的 . .................................................................................................................. 3 实验实例介绍: . ...................................................................................................... 3
实验三 控制工具箱与SIMULINK 软件应用 .............................................................................. 9
一. 二. 三. 四.
实验目的 . .................................................................................................................. 9 实验预习要求: . ...................................................................................................... 9 学会调出、运行已由SIMULINK 建立的仿真模型。 ........................................ 9 实验设计题目与要求: . ........................................................................................ 10
实验一 Matlab 语言编程
一. 实验目的
熟悉Matlab 语言及其编程环境,掌握编程方法 要求认真听取实验指导老师讲解与演示
二. 具体实验内容、步骤、要求:
1.运行交互式学习软件,学习Matlab 语言
2.在Matlab 的命令窗口下输入如下命令:INTRO, 然后根据显示出来的幻灯片右面按钮进行操作,可按START —>NEXT—>NEXT按钮,一步步运行,观察。
3.自编程序并完成上机编辑、调试、运行,存盘。
⎡11⎢21
(1). 用Matlab 命令完成矩阵的各种运算,例如:A =⎢
⎢31⎢⎣41
[**************]3
14⎤24⎥⎥ 34⎥⎥44⎦
求出下列运算结果,并上机验证。
A(:,1),A(2,:),A(1:2,2:3),A(2:3,2:3),A(:,1:2),A(2:3), A(:),A(:,:),ones(2,2), eye(2)
⎡11⎤⎢21⎥
A(:,1)=⎢⎥
⎢31⎥⎢⎥⎣41⎦
A(2,:)=[21222324]
⎡1213⎤
A(1:2,2:3) =⎢⎥
⎣2223⎦ ⎡2223⎤
A(2:3,2:3) =⎢⎥
⎣3233⎦
⎡11⎢21
A(:,1:2) =⎢
⎢31⎢⎣41
12⎤22⎥⎥32⎥⎥42⎦
A(2:3) =[2131]
⎡11⎤⎢21⎥⎢⎥⎢31⎥⎢⎥⎢41⎥⎢12⎥⎢⎥⎢22⎥⎢32⎥⎢⎥⎢42⎥A(:)=⎢⎥
13⎢⎥⎢23⎥⎢⎥⎢33⎥⎢43⎥⎢⎥⎢14⎥⎢24⎥⎢⎥⎢34⎥⎢44⎥⎣⎦
⎡11⎢21
A(:,:)=⎢
⎢31⎢⎣41
[**************]3
14⎤24⎥⎥34⎥⎥44⎦
⎡10⎤
eye (2) =⎢⎥
⎣01⎦
⎡11⎤
ones (2, 2) =⎢⎥11⎣⎦
(2). 绘制数学函数图形
t=0:0.1:8;
y=1-2*t.*sin(t); plot(t,y)
绘制数学函数图形
15
10
5
输出y
-5
-10
-150
123
4时间t
5678
4.理解命令文件和函数文件的区别,并自编函数文件并调用。
5.学会通过Help, 熟悉Matlab 中为用户提供的功能各异的命令和函数。
实验二 数值积分算法及函数调用练习
一. 实验目的
理解数值积分算法,熟练掌握Matlab 的函数调用。
二. 实验实例介绍:
1. 用Euler 法求初值问题的数值解。 设方程如下:du /dt =u -2t /u (2-1式)
u (0) =1 t=[0,1]
取步长h=0.1,名为FZSYZ1.M
上机用如下程序名FZSYZ1.M 可求出数值解。
t0=0; tf=1; x0=1; h1=0.1; t=[t0:h1:tf]; n=length(t); u=x0;
uu(1)=u; for i=2:n du=u-2*t(i-1)/u; u=du*h1+u; uu(i)=u; end
plot(t,uu,'b-' )
2. 在Matlab 中提供了现成的数值积分的函数,如ode1,ode23,ode45求解微分方程组,下面介绍ode23它为二阶/三阶的RKF 法在MATLAB 的ToolBox 文件夹的MATLAB/funfun下的M 文件,在此介绍其调用方法与应用例子如下:
系统函数名为描述系统状[t , x ]=ode 23('系统函数名' , t 0, t f , x 0, t 01, trace ) 其中,态方程的M 函数的名称,该函数名在调用时应该用引号括起来(文件名字串)
T0,tf 为起始和终止时间
X0系统初始状态变量的值(列向量)
T01:控制解的精度。(缺省值为t 01=10-3在ode23中)
Trace:输出形式控制变量,非零则程序运行的每步都显示出来。 T:输出参数返回积分的时间离散值(列向量) X0:输出参量,返回每个时间点值的解的列向量 注意:系统函数的编写格式为固定的。 Function xdot=系统函数名(t,x )
例如:若MATLAB 求解初值问题的解,其方程如下:
X =X -t 2 (2-2式);x(0)=1;t=[0 3]
第一步:编写如下程序:
function xdot=fun22(t,x)
xdot=x-2*t/x
并以fun21.m 存盘
第二步:编写如下程序并以fzsy22.m 存盘
t0=0;tf=1;tol=1e-6 x0=1;trace=1;
[t,x]=ode23('fun22' ,t0,tf,x0,tol,trace) plot(t,x,'g-.' )
第三步:在命令窗口中运行fzsy22即可求出x 的解,并画出曲线,如下:
图2-1 Euler方程和ode23算法求解的解曲线
3.实验具体内容、步骤、要求:
(1) 运行交互式软件中函数调用,学习程序;
(2) 试将(2-2)方程改为用Euler 方程求解是比较用ode23求解结果。 Euler 法程序:
t0=0; tf=3; x0=1; h1=0.1; t=[t0:h1:tf]; n=length(t); u=x0;
uu(1)=u; for i=2:n du=u-t(i-1).^2; u=du*h1+u; uu(i)=u; end
plot(t,uu,'b-' )
图形如2-1所示
(3) 试将(2-1)方程改为用ode23算法调用函数求解,并试比较结果。
Fun22.m 文件
function xdot=fun22(t,x) xdot=x-2*t/x
Fun22_.m文件
t0=0;tf=1;tol=1e-6 x0=1;trace=1;
[t,x]=ode23('fun22' ,t0,tf,x0, tol,trace) plot(t,x,'g-.' )
图2-2 Euler 方程和ode23算法求解的解曲线
(4) 利用ode23和ode45求解线性时不变系统微分方程
y (t ) =Ay (t ) 并绘出y(t)的曲线。式中
.
1⎤⎡-0. 5
A =⎢. ⎥ t =t 0
-1-0. 5⎣⎦
[
⎡0⎤
t f t 0=0 t f =4 y 0=⎢⎥
⎣1⎦
]
程序和解曲线分别如下:
用Ode23求解
F4.m 文件
function dy=fun4(t,y) dy=[-0.5*y(1)+y(2);-y(1)-0.5*y(2)];
f4_.m文件
[t,y]=ode23('fun4' ,0,4,[1;1])
plot(t,y,'b-' )
用Ode45求解
Fu.m 文件
function dy=fu(t,y) A=[-0.5 1;-1 -0.5]; dy=A*[y(1);y(2)]
fu_.m文件
[t,y]=ode45(@fu,[0 4],[0;1]); plot(t,y,'g-.' )
图2-3 分别用ode23和ode45求解的曲线
5. 求出G 1(S ) =2/(S 2+2S +1) 与G 2(S ) =1/(2S 2+3S +1) 的单位阶跃响应,并分别求出状态空间模型。
程序和图形分别如下: b=[0 0 2] a=[1 2 1] gs=tf(b,a) step(gs) hold on
[A,B,C,D]=tf2ss(b,a) b1=[0 0 0 1] a1=[2 3 3 1] gs1=tf(b1,a1) step(gs1)
[A1,B1,C1,D1]=tf2ss(b1,a1)
. ⎧⎪X =AX +BU
⎨
⎪⎩Y =CX +DU . ⎧⎪X =A 1X +B 1U
⎨
⎪⎩Y =C 1X +D 1U
⎡-2-1⎤
A =⎢
0⎥⎣1⎦
⎡1⎤
B =⎢⎥; C =[02]; D =[0]
⎣0⎦
⎡-1. 5-1. 5-0. 5⎤
⎥ A 1=⎢100⎢⎥
⎢10⎥⎣0⎦
;
⎡1⎤
⎥; C =[000. 5]; D =[0]
B 1=⎢011⎢⎥
⎢⎣0⎥⎦
图2-4 G1(S)和G2(S)的单位阶跃响应曲线
选做题一:已知系统传递函数为G(S)=模型,绘制系统阶跃响应。 程序如下:
a=200*[1 2] poly2str(a,'s' ) b=conv([1 1],[1 10 42]) poly2str(b,'s' ) [z,p,k]=tf2zp(a,b) gs=zpk(z,p,k) gs1=tf(a,b) step(gs1)
200(S+2)
求对应的零极点2
(S+1)(S+10S +42)
图形如2-5所示
图2-5 G(S)的单位阶跃响应曲线
实验三 控制工具箱与SIMULINK 软件应用
一. 实验目的
熟悉工具箱及使用,进行系统仿真分析,通过仿真对系统进行校正校验。
二. 实验预习要求:
必须先复习教材及上课介绍的有关控制工具箱命令与SIMULINK 仿真工具的使用,并对实验题目做好准备。
三. 学会调出、运行已由SIMULINK 建立的仿真模型。
在打开MATLAB 的窗口下,
(1)输入SIMULINK 或双击命令窗口工具栏左起第二个按钮(NEW SIMULINK MODEL)将会打开Library SIMULINK然后指向FILE 菜单下拉菜单open 调出fzsy31.mdl 文件,然后再fzsy3.mdl 文件的菜单观察并记录有关设置参数,然后指向Start 下拉菜单单击一次观察输出图形。该仿真模型如下:
图3-1 模型一
(2)按照下图修改上述仿真模型,观察分析系统输出。
图3-2 模型二
10
[1**********]
2
4
6
8
10
12
14
16
18
20
图3-3 模型一和二的系统响应曲线
四. 实验设计题目与要求:
(1)参见题目要求,建立仿真模型,进行仿真试验与分析。然后,回答题目提出的问题。
本习题介绍了滞后于超前补偿器在不稳定系统中的补偿作用。
以双积分器为例: G(S)=1/S2 其补偿器有如下三种: Ⅰ、比例补偿器:K(S)=K C
Ⅱ、超前补偿器:K(S)=K C (S+1)/(S+5) Ⅲ、滞后补偿器:K(S)=K C (S+5)/(S+1) 初步分析:绘制系统根轨迹图,并回答下列问题。
① 在第Ⅰ种情况下,系统能够稳定吗?增加K C 的作用是什么? 答:临界稳定,增加K C 增加系统动态响应性能。
② 在第Ⅱ种情况下,系统能够稳定吗?增加K C 的作用是什么? 答:能稳定,增加K C 减小系统超调,减小调节时间,增加系统快速性。
③ 在第Ⅲ种情况下,系统能够稳定吗?增加K C 的作用是什么? 答:不能稳定,增加K C ,系统发散,震荡频率和赋值增大。 根轨迹图分别如下:
Root Locus
1.5
1
0.5
I m a g i n a r y A x i s
-0.5
-1
-1.5-0.2
-0.15-0.1-0.05
Real Axis
00.050.10.15
图3-4 第Ⅰ种情况下的系统根轨迹图
Root Locus
15
10
5
I m a g i n a r y A x i s
-5
-10
-15-6
-5-4-3
Real Axis
-2-101
图3-5 第Ⅱ种情况下的系统根轨迹图
Root Locus
40
30
20
10
I m a g i n a r y A x i s
-10
-20
-30
-40-6
-5-4-3-2-10123
Real Axis
图3-6 第Ⅲ种情况下的系统根轨迹图
上机实验:
④ 设K C ={0.1,0.5,1},对上述每一种情况进行仿真,求得其阶跃响应。 要求将这三种情况的闭环阶跃响应绘制在一张图中。分析该图,证明在初步分析过程中所得到的结论。每种情况中,仿真时间可为{10,50,5}。
图3-4采用比例补偿器的系统阶跃响应
图3-5采用超前补偿器的系统阶跃响应
图3-6 采用滞后补偿器的系统阶跃响应
G(S)=
(2) 系统对象为:
K 1(S)=
4S(S+2)
PI 补偿器:
S +0.5S +1
K 2(S)=S ; S
a. 若由K 1(S)与G(S)串联组成的单位反馈系统,称为系统A 。 b. 若由K 1(S)放置在若由G(S)的反馈通道称为系统B 。
c .若由K 2(S)与G(S)串联组成的单位反馈系统称为系统C ,绘制上述每一种情况的阶跃响应与斜坡响应。求每一种情况下的系统阶跃响应与斜坡响应误差,
并与理论分析结果进行比较。
图3-7 系统A 、B 、C 的单位阶跃响应
图3-8系统A 、B 、C 的单位斜坡响应