运用MATLAB完成传递函数的表示和求解符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。相关指令为sym()和sysms()。一、 实验内容运用符号运算,编程完成书习题2-12(b)、2-15(d)、另任选其它题1题系统传递函数的表示和求解。二、 实验要求方案设计,分析解题文本,…
运用MATLAB完成传递函数的表示和求解
符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。相关指令为sym()和sysms()。
一、 实验内容
运用符号运算,编程完成书习题2-12(b)、2-15(d)、另任选其它题1题系统传递函数的表示和求解。
二、 实验要求
方案设计,分析解题文本,编程实现。
三、 实验步骤
2-12(b),求传递函数C(s)/R(s)和C(s)/N(s)
1. 结构框图

2. 结构框图分析
(1) 基本结构分析
当只考虑输入R(s)作用时,扰动输入N(s)=0:
根据上面的结构框图可以很明显的发现存在交叉,因此需要对结构框图进行等效化简。
1) G1(s)的比较点后移,将G2(s)和G3(s)构成的并联系统合并后的框图如下:

2) 将单位反馈回路的比较点前移,得到如下框图

3) 根据上面的结构框图即可很简单的设计系统函数的代码,
G1和G2+G2并联;
G4和G2+G3构成反馈回路;
前面的并联部分和后面的反馈部分构成串联系统。
4) 根据这个思路,编程实现即可
当只考虑扰动输入N(s)作用时,输入R(s)=0:
1) 将R(s)置0,等效结构图如下图所示:

2) 该结构图已经足够简化,后面直接进行代码设计即可
3) G2和G3构成并联负反馈;
G2和G3构成的并联整体与G4构成负反馈
得到结果
3. 源代码
% 当只考虑输入R(s)作用时,扰动输入N(s)=0:
G1=sym('G1');%符号定义G1
G2=sym('G2');%
G3=sym('G3');%
G4=sym('G4');%
sys1=G2+G3;%计算由G2和G3组成的串联结构
sys2=sys1+G1*G2;%G2+G3与G1G2构成并联结构
sys3=G4/(1+G4*sys1);%G4与G2+G3构成负反馈回路
sys=sys2*sys3%不加分号,在命令窗口打印结果,前后两部分的串联
%当只考虑扰动输入N(s)作用时,输入R(s)=0:
pause%暂停,空格继续
clc; %清空命令行窗口
SYS1=G2+G3;%G2和G3构成并联结构
SYS=G4/(1+SYS1*G2)%不加分号,输出结果,G4与G2+G3构成负反馈结构
4. 实验结果及分析**
当只考虑输入R(s)作用时,扰动输入N(s)=0:

当只考虑扰动输入N(s)作用时,输入R(s)=0:

与实际计算结果保持一致
2-15(d),求传递函数C(s)/R(s)和C(s)/N(s)
1. 信号流图

2. 结构流图分析
(1) 基本结构分析
当只考虑R1时,R2为0:
该结构是存在交叉的,需要将下面的反馈回路的引出点后移,由于引出点后的系数为1,因此引出点后移后反馈回路的系数并未改变,引出点后移后的结构流图如下所示:

c和-f构成反馈回路h1;
b和h1构成串联结构g1;
a与g1构成并联结构g2;
e和-g构成反馈回路h2;
d和h2构成串联结构g3;
1和g3构成并联结构g4;
g2和g4构成串联结构g5;
g5和-h构成负反馈结构G;
当只考虑R2时,R1为0:

该结构图中,将-h的引出点进行了后移,但是由于后面的系数为1,因此引出点后移后反馈线的系数仍未-h;将1的引出点后移,系数变为d;
e和-g构成负反馈回路h1;
h1和1串联后与d并联构成g0;
c和-f构成负反馈回路h2;
b和h2构成串联结构g1;
g1和a构成并联结构g2;
d、g2和-h构成串联结构g3;
g3为负反馈支路,与g0构成负反馈结构g4;
源代码
clc;%清除命令行窗口
%当只考虑R1时,R2为0:
syms a b c d e f g h l;%定义符号变量
h1=c/(1+c*f);%c和f构成反馈回路h1
g1=b*h1;%b和h1构成串联结构g1
g2=a+g1;%a和g1构成并联结构g2
h2=e/(1+e*g);%e和g构成负反馈回路h2
g3=d*h2;%d和h2构成串联结构g3
g4=1+g3;%1和g3并联为g4
g5=g2*g4;%g2和g4串联结构g5
sys=g5/(1+g5*h)%g5和h构成总的负反馈回路sys
pause%
clc;%清除命令行窗口
%当只考虑R2时,R1为0:
h1=e/(1+e*g);%e和g构成负反馈回路h1
g0=h1+d;%h1和d构成并联结构g0
h2=c/(1+c*f);%c和f构成负反馈回路h2
g1=b*h2;%b和h2构成串联结构g1
g2=g1+a;%g1和a构成并联结构g2
g3=d*g2*h;%d和g2和h构成串联结构
g4=g0/(1+g0*g3);%g0和g3构成负反馈回路
sys=l*g4 %不加分号,在命令行窗口输出结果
4. 实验结果**


这里可以发现,和我们的实际计算结果还是存在着偏差,至少从表达形式上是存在不一致的。
下面是手动的计算结果:

习题2-11(e)求传递函数C(s)/R(s)
1. 结构框图

2.流图分析
(1) 基本结构分析
该结构是存在交叉的,是无法直接使用符号表达式求解传递函数的,因此需要将结构框图简化。将H2后面的引出点进行前移,H2→H2 G3;
将H1最前面的比较点后移,H1→G1H1;下面是比较点和引出点移动后的结构框图:

根据上面的等效结构框图,编程思路:
H2和G3串联H11;
G1和H1串联H22;
G2和H11,H22,H1构成负反馈结构G22;
G1,G22,G3构成串联结构G44;
G44与G4并联为整个系统结构sys;
3.源代码
clc;%清空命令行窗口
syms H1 H2 H3 G1 G2 G3 G4;%定义符号变量
H11=H2*G3;%H2、H3构成串联结构
H22=G1*H1;%G1和H1构成串联结构
G22=G2/(1+(H11-H22+H1)*G2);%三个反馈并联,然后与G2构成总的负反馈
G44=G1*G22*G3;%三部分串联
sys=G44+G4%中间所有合并的结构与G4并联,不加分号控制台打印输出结果
4.实验结果

与实际计算结果完全一致
四、 实验心得与收获
略
评论 (0)