仿真技术实验程序与思考题解答完整版汇总
实验一 连续系统的数字仿真
一、实验目的
1. 熟悉Matlab 中m 文件的编写;
2. 掌握龙格-库塔法的基本原理。
二、实验设备
计算机、MATLAB 软件
三、实验容
假设单变量系统如图所示。试根据四阶龙格-库塔法,求系统输出y 的动态响应。
1.首先把原系统转化为状态空间表达式:?????=+=?CX
y bu AX X ,根据四阶龙格-库塔公式,可得到: ??
???=++++=+++1143211)22(6k 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;
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软件
三、实验容
仿真基本步骤:
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));
k2=A*h;
k3=k2*k2/2;
k4=k3*k2/3;
k=k1+k2+k3+k4;
x=[zeros(size(A1,1),1);10];
y=0;
t=0;
for i=1:Tf/h
x=k*x;
y=[y,C*x];
t=[t,i*h];
end
plot(t,y)
五、思考题
1.增广矩阵法和四阶龙格-库塔法有何区别?
答: ...t A !
31t A 21At I e 3322A ++++=!t 如果取t
A e 的泰勒级数前五项,则增广矩阵的计算与四阶龙格库塔法相同。
四阶龙格库塔法具有很高的精度,但运行速度很慢,而增广矩阵法既满足了精度又满足了速度。
实验四 离散相似法仿真
一、实验目的
1. 掌握离散化的基本原理;
2. 掌握非线性系统的离散化仿真方法。
二、实验设备
计算机、MATLAB 软件
三、实验容
已知非线性系统结构图如下,求系统输出响应。
1. 给定参考输入,输入仿真时间,采样周期(T=0.1s );
2. 将被控对象离散化;
3. 给定参数初始值;
4.计算误差和非线性环节输出;
5.计算系统输出;
6.参数值更新;
7.若仿真时间到,则结束,否则转1。
编写仿真程序,求解系统输出响应。四、实验结果及分析
源程序:
%backlash.m
function [x,u1]=backlash(u1,u,x1,s)
if (u>u1)
if ((u-s)>=x1) x=u-s;else x=x1;end else if (u if ((u+s)<=x1) x=u+s;else x=x1;end else x=x1; end end u1=u; 主程序: r=10; [num,den]=series([1 0.5],[1 0.1],[1],[1 0]); [num,den]=series(num,den,2,[1,2]); [num,den]=series(num,den,10,[1 10]); [A,B,C,D]=tf2ss(num,den); Tf=10; T=0.025; [G,H,C,D]=c2dm(A,B,C,D,T,'zoh'); x=zeros(size(G,1),1); y=0; t=0; s=1; e1=0;u1=0; for i=1:Tf/T e=r-y(end); u=backlash(e1,e,u1,s); x=G*x+H*u; y=[y,C*x+D*u]; t=[t,i*T]; u1=u; e1=e; end; plot(t,y) 五、思考题 1. 试比较零阶保持器与双线性变换法区别。 答:零阶保持器与双线性变换都能够实现将连续系统的离散化,只是所使用的方法不同,零阶保持器是在系统中加入了s e Ts --1实现离散化,而双线性变换是直接将1 12+-=z z h s 代入传递函数实现离散化。 实验五 采样控制系统的数字仿真 一、实验目的 3. 掌握采样控制系统基本原理; 4. 掌握常用的离散化方法; 5. 掌握采样控制系统的仿真方法。 二、实验设备 计算机、MATLAB 软件 三、实验容 已知采样系统结构如下图所示,求系统的输出响应。 将系统中连续部分采用零阶保持器离散化,系统采用离散化方法进行仿真(同步采样),其具体步骤如下: 1、 给定参考输入,输入仿真时间,采样周期(T=0.1s ),PID 控制器参数; 2、将被控对象按零阶保持器方法离散化; 3、给定参数初始值; 4、计算误差和控制器输出; 5、计算系统输出; 6、参数值更新 7、若仿真时间到,则结束,否则转1。 编写仿真程序,并调整控制器参数,使得系统输出响应较为合理。 四、实验结果及分析 源程序: r=1; Tf=20; Tm=1; T=0.01; kp=0.4; ki=0; kd=0; [A,B,C,D]=tf2ss(1,[1 1 0]); [G,H,C,D]=c2dm(A,B,C,D,T,'zoh'); u1=0; e2=0; e1=0; x=zeros(2,1); y=0; t=0; for i=1:Tf/T e=r-y(end); u2=u1+kp*(e-e1)+ki*e+kd*(e-2e1+e2); x=G*x+H*u2; y=[y,C*x+D*u2]; t=[t,i*T]; e2=e1;e1=e;u1=u2; end plot(t,y); 五、思考题 2. 同步采样与异步采样在程序实现上有何区别? 答:同步采样:T=h ,异步采样T=N*h 同步采样时,在程序中只要一个for 循环即可实现,而异步采样需要两个for 循环实现。 实验六 串联超前校正 一、实验目的 1. 掌握超前校正装置的基本特性; 2. 熟悉串联超前校正方法。 二、实验设备 计算机、MATLAB 软件 三、实验容 设有一单位负反馈系统,其开环传递函数为:) 2()(0+=s s k s G ,要求系统的稳态速度误差系数k v =20(1/s),相位裕量r>50,幅值裕量k g >10db ,试确定串联校正装置。 设计基本步骤: 1. 根据性能指标确定开环增益k ; 2. 利用确定的开环增益k 画出未校正系统的Bode 图,并求其相位裕量r0和幅值裕 量k g ; 3. 确定所需增加的超前相位角ε+-=Φ0r r c ,ε一般取5~15; 4. 令超前校正装置最大超前角c m Φ=Φ,则c c Φ+Φ-=sin 1sin 1α;