仿真技术实验程序及思考题解答完整版汇总

  • 格式:doc
  • 大小:180.00 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一 连续系统的数字仿真

一、实验目的

1. 熟悉Matlab 中m 文件的编写; 2. 掌握龙格-库塔法的基本原理。 二、实验设备

计算机、MATLAB 软件 三、实验内容

假设单变量系统如图所示。试根据四阶龙格-库塔法,求系统输出y 的动态响应。

1.首先把原系统转化为状态空间表达式:⎪⎩⎪

⎨⎧=+=•CX

y bu AX X ,根据四阶龙格-库塔公式,

可得到: ⎪⎩

⎪⎨⎧

=++++=+++1143211)

22(6

k k k k CX y K K K K h X X (1) 其中: ⎪⎪

⎪⎩⎪⎪⎪⎨⎧+++=+++=+++=+=)

()()

2()2()2()2()(3423121h t bu hK X A K h

t bu K h X A K h t bu K h X A K t bu AX K k k k k k k k k (2)

根据(1)、(2)式编写仿真程序。

2.在Simulink 环境下重新对上述系统进行仿真,并和1中结果进行比较。 四、实验结果及分析

要求给出系统输出响应曲线,并分析计算步长对龙格-库塔法的影响。

计算步长对龙格-库塔法的影响:单从每一步看,步长越小,截断误差就越小,但随着步长的缩小,在一定求解范围内所要完成的步数就增加,不但引起计算量的增大,而且可能导致舍入误差严重积累,因此同积分的数值计算一样,微分方程的解法也有选择步长的问题。 源程序:

r=5;

numo=[1];deno=[1 4 8 5]; numh=1;denh=1;

[num,den]=feedback(numo,deno,numh,denh); [A,b,C,d]=tf2ss(num,den);

Tf=input('仿真时间 Tf= ');h=input('计算步长 h='); x=[zeros(length(A),1)];y=0;t=0;

for i=1:Tf/h; K1=A*x+b*r;

K2=A*(x+h*K1/2)+b*r; K3=A*(x+h*K2/2)+b*r; K4=A*(x+h*K3)+b*r;

x=x+h*(K1+2*K2+2*K3+K4)/6; y=[y;C*x];t=[t;t(i)+h]; end plot(t,y)

Tf=5 h=0.02

五、思考题

1. 试说明四阶龙格-库塔法与计算步长关系,它与欧拉法有何区别。

计算步长对龙格-库塔法的影响:单从每一步看,步长越小,截断误差就越小,但随着步长的缩小,在一定求解范围内所要完成的步数就增加,不但引起计算量的增大,而且可能导致舍入误差严重积累,因此同积分的数值计算一样,微分方程的解法也有选择步长的问题。

区别:四阶龙格库塔法与欧拉法都是基于在初值附近展开成泰勒级数的原理,所不同的是取泰勒级数的项数,欧拉公式仅取到h 项,四阶龙格库塔法取到h4项。

实验二 面向结构图的仿真

一、实验目的

1. 掌握连接矩阵及系统状态方程的确定方法; 2. 掌握面向结构图的仿真方法。 二、实验设备

计算机、MATLAB 软件 三、实验内容

假设某系统由三个典型环节组成,如下图所示,求输出量y 的动态响应。

仿真基本步骤:

1. 给定输入信号,确定典型环节及环节参数; 2. 确定连接矩阵;

3. 输入仿真时间和计算步长;

4. 求H,H -1

和Q 阵,确定A 、B 阵; 5. 根据龙格-库塔法求状态方程的解; 6. 根据1~5编写仿真程序。 四、实验结果及分析 源程序:

r=10;

P=[0 1 1 0;2 1 2 0;10 1 10 0]; W=[0 0 -1;1 0 0; 0 1 0]; W0=[1;0;0]; Wc=[0 0 1];

Tf=input('仿真时间 Tf =');h=input( '计算步长 h=');

A1=diag(P(:,1));B1=diag(P(:,2));C1=diag(P(:,3));D1=diag(P(:,4)); H=B1-D1*W;Q=C1*W-A1; A=inv(H)*Q;B=inv(H)*C1*W0;

x=[zeros(length(A),1)];y=[zeros(length(Wc(:,1)),1)]; t=0; for i=1:Tf/h; K1=A*x+B*r;

K2=A*(x+h*K1/2)+B*r; K3=A*(x+h*K2/2)+B*r; K4=A*(x+h*K3)+B*r;

x=x+h*(K1+2*K2+2*K3+K4)/6; y=[y;Wc*x];t=[t;t(i)+h]; end

plot(t,y) 仿真时间Tf=10 计算步长h=0.05

图一 仿真曲线

五、思考题

1. 典型环节的确定必须满足什么条件? 答: G(S)=

bs

a ds

++=c U(S)X(S)式中u 为典型环节的输入,x 为典型环节的输出。 1.为了保证H 的逆1

-H 存在,应严格按照i b ≠0的原则确定每个典型环节,既避免以纯比例、

纯微分环节作为典型环节。

2.在输入向量不全为阶跃函数的情况下,只要在确定典型环节时,注意使含有微分项系数即d≠0)的环节不直接与参考输入连接。

i

实验三连续系统的快速仿真

一、实验目的

1.熟悉增广矩阵的构建方法;

2.掌握连续系统的快速仿真基本原理。

二、实验设备

计算机、MATLAB软件

三、实验内容

假设某系统结构图如下,要求采用快速仿真方法求系统输出响应。Array

仿真基本步骤:

1.给定输入信号,确定典型环节及环节参数;

2.确定连接矩阵;

3.输入仿真时间和计算步长;

4.求H,H-1和Q阵,确定A、B阵;

5.构建增广矩阵;

6.采用增广矩阵法求齐次方程的解和系统输出响应。

根据1~6编写仿真程序。

四、实验结果和分析

源程序:

r=10;

[num,den]=series(1,[1,0],2,[1,2]);

[num,den]=series(num,den,10,[1,10]);

[num,den]=cloop(num,den);

[A1,B1,C1,D1]=tf2ss(num,den);

A=[A1,B1;0,0,0,0];

C=[C1,0];

Tf=10;

h=0.05;

k1=eye(size(A));