中南大学matlab试卷
- 格式:doc
- 大小:881.50 KB
- 文档页数:17
电子信息科学与技术09级Matlab 期末考试试卷
(2012年5月)
院系: 物理与电子 年级: 电信09级 班级: 3班 学号: 1404090311 姓名: 徐云霄 题号 1 2 3 4 5
总成绩 评卷人 得分
说明:请保留题目,在每个题目解答部分的空白处依次作答,并写清楚每个
小题的题号。作答要给出程序代码、仿真结果。
1、(30分) 如下图所示的弹簧振子系统在光滑的水平面运动,已知弹簧振子的质量kg m 2.0=,弹簧的倔强系数m N K /2.0=。在0=t 时弹簧振子位于m x 1)0(=,速度为s m v /2)0(-=。假设该系统在0≥t 时受到沿正方向的策动力
t e F 2.01.0-=的作用,并且弹簧所受空气等阻力为
cv f -=阻,其中m Ns c /1.0=,v 为弹簧振子的运动速度。因此,该运动方程可
以表示为:t e kx x c x m 2.01.0-+--=
。 (1) 利用Dsolve 函数,编写程序代码求解弹簧振子运动方程的通解,并仿真
s t ]20,0[∈弹簧振子的位置图像。(5分)
(2) 利用常微分方程的数值解法编写程序代码,利用子图绘制函数subplot(3,2,n)在同一窗口分别绘制s t ]20,0[∈弹簧振子:(10分)
(a) 位置图像(要求标注:线的颜色(红色)、线型(-.点划线)、线宽(2)、数据点标注形状(* ));(b) 速度图像;(c) 加速度图像;(d) 弹簧振子动能
221
mv E k =图像;(e) 弹簧振子势能22
1kx E p =图像;(f) 弹簧振子能量图像。以
上绘图分别要求标注对应的标题(如:位置图像、速度图像……)。 (3) 构建simulink 仿真模块,在同一个窗口利用三个坐标系按顺序分别仿真
s t ]20,0[∈弹簧振子的加速度图像、速度图像、位置图像。(5分)
(4) 利用s-function ,构建simulink 仿真模块,在同一个窗口利用三个坐标系按顺序分别仿真s t ]20,0[∈弹簧振子的位置图像、速度图像、加速度图像。(s-function 函数程序只需给出编写的主要代码)(10分)
x
解答:
(1) 第一小问:
syms x t
>> y=dsolve('0.2*D2x=-0.1*Dx-0.2*x+0.1*exp(-0.2*t)','t')
y =
exp(-1/4*t)*sin(1/4*15^(1/2)*t)*C2+exp(-1/4*t)*cos(1/4*15^(1/2)*t)*C1+25/47*e xp(-1/5*t)
第二小问:
首先求解运动方程的特解
y=dsolve('0.2*D2x=-0.1*Dx-0.2*x+0.1*exp(-0.2*t)','x(0)=1','Dx(0)=-2','t')
y =
-334/705*exp(-1/4*t)*sin(1/4*15^(1/2)*t)*15^(1/2)+22/47*exp(-1/4*t)*cos(1/4*1 5^(1/2)*t)+25/47*exp(-1/5*t)
进行仿真
t=0:0.1:20;
y=-334/705*exp(-1/4*t).*sin(1/4*15.^(1/2)*t)*15^(1/2)+22/47*exp(-1/4*t).*cos(1 /4*15^(1/2)*t)+25/47*exp(-1/5*t); %将求出的特解转化为矩阵形式。
>> plot(t,y,'r')
仿真之后的效果图如下
(2) 程序代码如下:
function xdot=sys(t,x)
xdot=[0.5*x(3)-0.75*x(2)-0.35*exp(-0.2*t);-0.5*x(2)-x(3)+0.5*exp(-0.2*t);x(2)];
t0=0;tf=20;
[t,x]=ode45('sys',[t0 tf],[1 -2 1]);
Ek=1/2*0.2*x(:,2).^2;
Ep=1/2*0.2*x(:,3).^2;
E=Ek+Ep;
subplot(231),plot(t,x(:,3),'-.r*'),title('位置图像');
subplot(232),plot(t,x(:,2),'-.r*'),title('速度图像');
subplot(233),plot(t,x(:,1),'-.r*'),title('加速度图像');
subplot(234),plot(t,Ek,'-.r*'),title('弹簧振子动能图像');
subplot(235),plot(t,Ep,'-.r*'),title('弹簧振子势能图像');
>> subplot(236),plot(t,E,'-.r*'),title('弹簧振子能量图像');
运行后的图像如下:
(3)构建simulink仿真模块如下图
仿真之后的结果如下图
从上之下依次为位置图像,速度图像,加速度图像。
(4)s-function函数程序的主要代码如下:
sizes = simsizes;
sizes.NumContStates = 3;
sizes.NumDiscStates = 0;
sizes.NumOutputs = 3;
sizes.NumInputs = 1;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 1; % at least one sample time is needed
sys = simsizes(sizes);
x0 = [1 -2 1];
str = [];
ts = [0 0];
function sys=mdlDerivatives(t,x,u)
sys = [0.5*x(3)-0.75*x(2)-0.35*u(1);-0.5*x(2)-x(3)+0.5*u(1);x(2)];
function sys=mdlUpdate(t,x,u)
sys = [];
function sys=mdlOutputs(t,x,u)
sys = [x(1);x(2);x(3)];
function sys=mdlGetTimeOfNextVarHit(t,x,u)
sampleTime = 1; % Example, set the next hit to be one second later. sys = t + sampleTime;
function sys=mdlTerminate(t,x,u)
sys = [];