基于MATLAB机电系统动态仿真部分习题

MATLAB仿真部分习题

  • 习题2:第1~8题
  • 习题5:第1~7题
  • 习题6:第2~4题

习题2:第1~8题

第1题

在指令窗口输入: x = 1:0.2:2 和 y = 2:0.2:1 ,观察所生成的数组。

代码实现:

 x = 1:0.2:2y = 2:0.2:1

运行结果:

x =1.0000    1.2000    1.4000    1.6000    1.8000    2.0000y =空的 1×0 double 行向量

第2题

要求在[ 0 , 2π ]上产生50个等距采样数据的一维数组,试用两种不同的指令实现。

代码实现:

x1 = 0:2*pi/9:2*pi;%冒号生成法
x2 = linspace(0,2*pi,10);%线性定点法

运行结果:

>> x1x1 =0    0.6981    1.3963    2.0944    2.7925    3.4907    4.1888    4.8869    5.5851    6.2832>> x2x2 =0    0.6981    1.3963    2.0944    2.7925    3.4907    4.1888    4.8869    5.5851    6.2832

第3题

计算
e − 2 t s i n t . \\e^{-2t}sint\,. e2tsint.
其中,t 为 [ 0 , 2π ]上生成的10个等距采样的数组。

代码实现:

 t = linspace(0,2*pi,10);t1 = exp(-2*t).*sin(t);

运行结果:

>> tt =0    0.6981    1.3963    2.0944    2.7925    3.4907    4.1888    4.8869    5.5851    6.2832>> t1t1 =0    0.1591    0.0603    0.0131    0.0013   -0.0003   -0.0002   -0.0001   -0.0000   -0.0000

第4题

已知
在这里插入图片描述
计算矩阵A 、B乘积和点乘。

代码实现:

 A = [1,2;3,4];B = [5,6;7,8];A1 = A * B;B1 = A .* B;

运行结果:

>> A1A1 =19    2243    50>> B1B1 =5    1221    32

第5题

对题4中的 A,令 A ( : , 3 ) = [ 5 ,6 ] 生成 2×3 数组 , 利用 reshape ( A , 3 , 2) 指令,使A重构为 3×2 数组,再利用 “[ ]” ,裁去重构后的数组 A 的第一列 ,求最后结果。

代码实现:

 A = [1,2;3,4];A(:,3) = [5;6];reshape(A,3,2);A(:,1) = [];

运行结果:

>> AA =2     54     6

第6题

已知
在这里插入图片描述
计算 A & B ,A | B ,~A ,A == B , A > B 。

代码实现:

A = [0,2,3,4;1,3,5,0];
B = [1,0,5,3;1,5,0,5];
X1 = A & B;
X2 = A | B;
X3 = ~A;
X4 = (A == B);
X5 = (A>B);

运行结果:

>> X1X1 =2×4 logical 数组0   0   1   11   1   0   0>> X2X2 =2×4 logical 数组1   1   1   11   1   1   1>> X3X3 =2×4 logical 数组1   0   0   00   0   0   1>> X4X4 =2×4 logical 数组0   0   0   01   0   0   0>> X5X5 =2×4 logical 数组0   1   0   10   0   1   0

第7题

先产生一个 3×3 的正态随机矩阵 A , 再用 floor(A) 、ceil(A) 、fix(A) 、round(A),进行 A 的取整运算,体会不同取整方法的效果。

代码实现:

A1 = rand(3);%返回3*3的随机矩阵
A = 10 + 2*A1;%产生均值为10,方差为4的矩阵
X1 = floor(A);
X2 = ceil(A);
X3 = fix(A);
X4 = round(A);

运行结果:

>> X1X1 =11    11    1011    11    1110    10    11>> X2X2 =12    12    1112    12    1211    11    12>> X3X3 =11    11    1011    11    1110    10    11>> X4X4 =12    12    1112    11    1110    10    12

第8题

将题6中的 A阵 用串转换函数转换为串B,再用size指令查看两者的结构有何不同。

代码实现:

  A = [0,2,3,4;1,3,5,0];%得到题6A矩阵B = num2str(A);Y1 = size(A);Y2 = size(B);

运行结果:

>> Y1Y1 =2     4>> Y2Y2 =2    10

习题5:第1~7题

第1题

将下列系统的传递函数模型用MATLAB语言表达出来。
在这里插入图片描述
代码实现:

 %习题5,第1题(1):传递函数模型(有理多项式)num = [1,35,291,1093,1700];den = [1,289,254,2541,4684,1700];sys = tf(num,den);

运行结果:

>> syssys =s^4 + 35 s^3 + 291 s^2 + 1093 s + 1700--------------------------------------------------s^5 + 289 s^4 + 254 s^3 + 2541 s^2 + 4684 s + 1700Continuous-time transfer function.

代码实现:

  %习题5,第1题(2):零-极点模型z = -3;p = [-1,-5,-15];k = 15;sys = zpk(z,p,k);

运行结果:

>> syssys =15 (s+3)------------------(s+1) (s+5) (s+15)Continuous-time zero/pole/gain model.

代码实现:

%习题5,第1题(3):两个传递函数串联z = [0,-2,-2];p = [-1,1];k = 100;[num1,den1] = zp2tf(z',p,k);sys1 = tf(num1,den1);num = [1,3,2];den = [1,2,5,2];sys2 = tf(num,den);sys = series(sys1,sys2);

运行结果:

>> syssys =100 s^5 + 700 s^4 + 1800 s^3 + 2000 s^2 + 800 s-----------------------------------------------s^5 + 2 s^4 + 4 s^3 - 5 s - 2Continuous-time transfer function.

第2题

求第 1 题中各个系统模型的等效状态空间模型。

代码实现:

 %习题5,第2题(1):传递函数模型→状态空间模型num = [1,35,291,1093,1700];den = [1,289,254,2541,4684,1700];sys = tf(num,den);Gss = ss(sys);

运行结果:

>> GssGss =A = x1      x2      x3      x4      x5x1    -289  -15.88  -9.926  -4.574   -1.66x2      16       0       0       0       0x3       0      16       0       0       0x4       0       0       4       0       0x5       0       0       0       1       0B = u1x1   2x2   0x3   0x4   0x5   0C = x1      x2      x3      x4      x5y1     0.5   1.094  0.5684  0.5337  0.8301D = u1y1   0Continuous-time state-space model.

代码实现:

 %习题5,第2题(2):零-极点模型→传递函数模型→状态空间模型z = -3;p = [-1,-5,-15];k = 15;[num,den] = zp2tf(z,p,k);sys = tf(num,den);Gss = ss(sys);

运行结果:

>> GssGss =A = x1      x2      x3x1     -21  -11.88  -2.344x2       8       0       0x3       0       4       0B = u1x1   2x2   0x3   0C = x1      x2      x3y1       0  0.9375  0.7031D = u1y1   0Continuous-time state-space model.

代码实现:

%习题5,第2题(3):两个传递函数串联,状态空间模型z = [0,-2,-2];p = [-1,1];k = 100;[num1,den1] = zp2tf(z',p,k);sys1 = tf(num1,den1);num = [1,3,2];den = [1,2,5,2];sys2 = tf(num,den);sys = series(sys1,sys2);Gss = ss(sys);

运行结果:

>> GssGss =A = x1    x2    x3    x4    x5x1    -2    -2     0  1.25     1x2     2     0     0     0     0x3     0     1     0     0     0x4     0     0     2     0     0x5     0     0     0   0.5     0B = u1x1  64x2   0x3   0x4   0x5   0C = x1     x2     x3     x4     x5y1  7.813  10.94  15.63  5.078  1.563D = u1y1  100Continuous-time state-space model.

第3题

将以下系统状态空间模型用MATLAB语言表达出来。
在这里插入图片描述
代码实现:

%习题5,3题:状态空间模型A = [3,2,1;0,4,6;0,-3,-5];B = [1,2,3]';C = [1,2,5];D = 0;Gss = ss(A,B,C,D);

运行结果:

>> GssGss =A = x1  x2  x3x1   3   2   1x2   0   4   6x3   0  -3  -5B = u1x1   1x2   2x3   3C = x1  x2  x3y1   1   2   5D = u1y1   0Continuous-time state-space model.

第4题

求第 3 题中的系统模型的等效传递函数模型和零极点模型。

代码实现:

%习题5,4题:状态空间模型→传递函数模型,传递函数模型→零-极点模型A = [3,2,1;0,4,6;0,-3,-5];B = [1,2,3]';C = [1,2,5];D = 0;Gss = ss(A,B,C,D);[num,den] = ss2tf(A,B,C,D);sys = tf(num,den);Gzpk = zpk(sys);

运行结果:

>> syssys =20 s^2 - 83 s + 138---------------------s^3 - 2 s^2 - 5 s + 6Continuous-time transfer function.>> GzpkGzpk =20 (s^2 - 4.15s + 6.9)----------------------(s+2) (s-3) (s-1)Continuous-time zero/pole/gain model.

第5题

已知系统动力学方程如下,试用MATLAB语言写出它们的传递函数。
在这里插入图片描述
代码实现:

%习题5,第5题(1):传递函数模型
num = [1,2,0];
den = [1,15,50,500];
sys = tf(num,den);

运行结果:

>> syssys =s^2 + 2 s-------------------------s^3 + 15 s^2 + 50 s + 500Continuous-time transfer function.

代码实现:

%习题5,第5题(2):传递函数模型
num = [4,0];
den = [1,3,6,4];
sys = tf(num,den);

运行结果:

>> syssys =4 s---------------------s^3 + 3 s^2 + 6 s + 4Continuous-time transfer function.

第6、7题
在这里插入图片描述

代码实现:

%习题5,6题:传递函数模型
k = 7;
c1 = 0.5;
c2 = 0.2;
m1 = 3.5;
m2 = 5.6;
num = [m1,c1,k];
den = [m1*m2,c1*m1+c2*m1+c1*m2,c1*c2+m2*k,c1*k+c2*k,0];
sys = tf(num,den);

运行结果:

>> syssys =3.5 s^2 + 0.5 s + 7--------------------------------------19.6 s^4 + 5.25 s^3 + 39.3 s^2 + 4.9 sContinuous-time transfer function.

代码实现:

%习题5,7题:传递函数模型
m1 = 12;
m2 = 38;
k = 1000;
c = 0.1;
num = [c,k];
den = [m1*m2,m1*c+m2*c,m1*k+m2*k,0,0];
sys1 = tf(num,den);num1 = [m1,c,k];
den = [m1*m2,m1*c+m2*c,m1*k+m2*k,0,0];
sys2 = tf(num1,den);

运行结果:

>> sys1sys1 =0.1 s + 1000---------------------------456 s^4 + 5 s^3 + 50000 s^2Continuous-time transfer function.>> sys2sys2 =12 s^2 + 0.1 s + 1000---------------------------456 s^4 + 5 s^3 + 50000 s^2Continuous-time transfer function.

习题6:第2~4题

第2题

将例 6-2 中的微分方程改写为以下形式:
在这里插入图片描述
求 u 分别为1、2时,在时间区间 t = [ 0 , 20 ] 微分方程的解(提示:使用附加变量的ode算法)

代码实现:

 %习题6,2题,主函数tspan = [0,20];x0 = [0,1];ps = 1;[T1,X1] = ode45('wffc',tspan,x0,odeset,ps);ps = 2;[T2,X2] = ode45('wffc',tspan,x0,odeset,ps);plot(T1,X1(:,1),'r',T2,X2(:,1),'b--');title('微分方程的解','fontsize',18);xlabel('时间t','fontsize',15);legend('T1','T2');
 %习题6,2题,子函数
function dx = wffc(t,x,flag,ps)
%微分方程的解dx = zeros(2,1);
dx(1) = x(2);
dx(2) = ps*(1-x(1)^2)*x(2)-x(1);end

运行结果:
在这里插入图片描述
第3、4题

在这里插入图片描述

代码实现:

%习题6,第3题(1)
num = [1,0.5];
den = [1,0.1];
sys1 = tf(num,den);z = [];p = [0,-2,-10];k = 20;sys2 = zpk(z,p,k);sys3 = series(sys1,sys2);sys4 = feedback(sys3,1,-1);%习题6,第3题(2)subplot(1,2,1)step(sys4);%计算系统对单位阶跃输入的响应%习题6,第3题(3)[u,t] = gensig('square',30,60);subplot(1,2,2)lsim(sys4,'r',u,t);%计算系统对任意输入的响应

运行结果1:

>> sys4sys4 =20 (s+0.5)-------------------------------------------(s+10.23) (s+0.8195) (s^2 + 1.052s + 1.193)Continuous-time zero/pole/gain model.

运行结果2:
在这里插入图片描述
代码实现:

%习题6,第4题(1)
num = 1;
den = [1,0.2,1.01];
sys = tf(num,den);subplot(1,2,1)
step(sys);%习题6,第4题(2)
sys1 = c2d(sys,0.3,'zoh');%传递函数离散
[num1,den1] = tfdata(sys1,'v');%离散后提取分子分母
subplot(1,2,2)
dstep(num1,den1);

运行结果:
在这里插入图片描述


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部