计算机仿真实验说明书修改稿.docx
- 文档编号:9588976
- 上传时间:2023-02-05
- 格式:DOCX
- 页数:22
- 大小:145.29KB
计算机仿真实验说明书修改稿.docx
《计算机仿真实验说明书修改稿.docx》由会员分享,可在线阅读,更多相关《计算机仿真实验说明书修改稿.docx(22页珍藏版)》请在冰豆网上搜索。
计算机仿真实验说明书修改稿
《计算机仿真》
上机指导书
适用专业:
探测制导与控制
装备工程学院
2007年8月
实验一Matlab基础
一、实验目的
1、熟悉Matlab语言环境
2、练习Matlab命令行计算
3、练习基本矩阵运算
4、练习基本绘图命令
二、实验内容
A、熟悉Matlab语言环境
1、双击Matlab图标进入Matlab环境。
2、打开联机帮助手册,浏览其内容和功能(点击菜单栏help下的Matlabhelp进入)。
3、观看演示程序(点击菜单栏help下的Demo进入)。
B、熟悉命令行计算
1、在CommandWindow中键入以下命令并观察结果。
>>helpsin
>>helplog
>>helpsum
>>lookforinverse(如果搜索结果太多或等待时间太长,可用Ctrl+C中断)
>>whichsum
2、在CommandWindow中键入以下命令并注意Workspace和CommandHistory窗口的变化。
>>x=5
>>y=[134;1+2isin(3)5+3*i;789]
>>y12=y(1,2)
>>y(1,2)=5
>>y23=y(:
2:
3)
>>z=x*y
>>whos
3、在CommandWindow中键入以下命令
>>savemydata(把工作空间中的变量保存到mydata.mat)
>>clear(清除工作空间中的变量)
>>loadmydata(从mydata载入变量)
C、练习使用m文件编写程序
4、用MATLAB语言实现下面的分段函数
参考程序:
myf.m
functiony=myf(x,h,D)
%计算分段非线性函数
%h,x>D
%y=h/Dx,|x|<=D
%-h,x<-D
%x可以是向量,h和D必须正实数。
lx=length(x);
fori=1:
lx
if(x(i)>D)
y(i)=h;
elseif(abs(x(i))<=D)
y(i)=h/(D*x(i));
else
y(i)=-h;
end
end
在命令窗口键入下面程序
h=1;D=2;
x=-3:
.1:
3;
y=myf(x,h,D)
plot(x,y,’*’)
另:
在命令窗口键入helpmyf,观察结果。
5、用for循环结构编写程序,求出
并考虑一种避免循环的简洁方法来进行求和。
参考程序:
mysum=0
fori=0:
63
mysum=mysum+2^i;
end
mysum
i=0:
63
mysum=sum(2.^i)
思考:
如果写成
mysum=sum(2^i)可以吗?
6、计算浮点运算相对精度eps
参考程序:
num=0;EPS=1;
while(1+EPS)>1
EPS=EPS/2;num=num+1;
end
EPS
num
eps
7、绘制y1=sin(2x),y2=cos(2x),y3=sin(2x)cos(2x){0~2π}的图形曲线
要求:
a、在三个窗口输出。
b、在同一坐标系中绘制三条曲线,y1使用红色实线圆圈标记,y2使用蓝色虚线十字标记,y3使用绿色点线*号标记。
c、在同一窗口中绘制三个子图。
参考程序:
clf
x=0:
.1:
2*pi;
y1=sin(2*x);
y2=cos(2*x);
y3=y1.*y2;
%三窗口输出
plot(x,y1)
pause
plot(x,y2)
pause
plot(x,y3)
pause
%同一窗口输出
plot(x,y1,'or-',x,y2,'+b--',x,y3,'*g:
')
legend('sin(2x)','cos(2x)','sin(2x)*cos(2x)',4)
title('绘图练习')
xlabel('xaxis')
ylabel('yaxis')
gridon
pause
subplot(311),plot(x,y1)
subplot(312),plot(x,y2)
subplot(313),plot(x,y3)
8、绘制三维螺线:
x=t,y=sin(t),z=cos(t),0 参考程序: t=[0: 0.5: 20]; x=t; y=sin(t); z=cos(t); plot3(x,y,z,'.-') 9、墨西哥帽子 绘制由函数 确定的曲面,-8 参考程序: x=[-8: 0.5: 8]; y=[-8: 0.5: 8]; [X,Y]=meshgrid(x,y); r=sqrt(X.^2+Y.^2)+eps; Z=sin(r)./r; mesh(X,Y,Z) pause hold surf(X,Y,Z) 实验2科学计算 一、实验目的 练习使用Matlab函数解决线性代数、数据插值、数据拟合、数理统计和符号运算等问题。 二、实验内容 1、已知a= ,计算矩阵的秩、行列式、特征值、迹。 参考程序: a=[123;456;789]; rank_a=rank(a) det_a=det(a) eig_a=eig(a) trace_a=trace(a) 2、求解下面的线性代数方程,并验证得出的解真正满足原方程。 参考程序: A=[721-2;9153-2;-2-2115;13213]; B=[4;7;-1;0] x=A\B A*x-B==0 3、数据插值: 根据以下数据,采用线性、多项式和样条插值方法作中间点插值。 Y -1 -1 -1 0 1 1 1 X -3 -2 -1 0 1 2 3 参考程序: x=-3: 3; y=[-1;-1;-1;0;1;1;1]; xi=-3: 0.5: 3; yi1=interp1(x,y,xi,'linear') yi2=interp1(x,y,xi,'cubic') yi3=interp1(x,y,xi,'spline') subplot(221),plot(x,y,'-o',xi,yi1,'*') subplot(222),plot(x,y,'-o',xi,yi2,'square') subplot(223),plot(x,y,'-o',xi,yi3,'x') 思考: 你能看清除各种插值方法的不同吗? 观察xi=-3: 0.1: 3时的结果。 4、数据拟合: 根据题3给出数据拟合曲线并绘图。 参考程序: x=-3: 3; y=[-1-1-10111]; p=polyfit(x,y,3) t=-3: .1: 3; yy=polyval(p,t); plot(x,y,'o',t,yy) 思考: 拟合与插值有什么不同? 5、非线性方程求解: 求sin(2x)+loge(2x)=0的解(取初值为1和4,观察初值的影响)。 参考程序: fun=inline('sin(2*x)+log(2*x)'); x0=input(‘inputx0: ’) x=fsolve(fun,x0,optimset('fsolve')) i=0.1: .1: 10; plot(i,sin(2*i)+log(2*i)) 6、数理统计: 产生10000个正态分布随机数,要求均值为5标准差为2,并校核随机数的均值和标准差。 参考程序: x=randn(10000,1); x=5+2*x; x_mean=mean(x) x_std=std(x) 思考: randn(100)的含义。 7、符号数学运算 a、使用Matlab求函数sin(2t)的微分、不定积分和泰勒展开(前8项) b、使用Matlab求 的拉普拉斯变换。 参考程序: symst,x x=sin(2*t); x_diff=diff(x) x_int=int(x) x_taylor=taylor(x) f1=exp(-2*t)*sin(2*t) laplace_f1=laplace(f1) 进一步: helpdiff helpint helptaylor helplaplace 实验3基于Matlab的系统仿真 一、实验目的 1、掌握ODE函数的调用方法 2、基于ODE函数实现弹道仿真 2、基于控制系统工具箱完成线性系统分析和仿真 二、实验内容 1、求解洛仑兹方程 参考程序: lorenzeq.m functionxdot=lorenzeq(t,x) xdot=[-8/3*x (1)+x (2)*x(3); -10*x (2)+10*x(3); -x (1)*x (2)+28*x (2)-x(3)]; myexc1.m [t,x]=ode45(@lorenzeq,[0,10],[0,0,1e-10]) plot(t,x) 2、根据下面的模型编写仿真程序,要求: a、仿真时间设置为弹目交会之后。 b、在同一窗口中绘制鱼雷运动曲线和目标运动曲线。 c、改变系统参数,如导引系数、鱼雷速度、舰船速度,观察仿真结果。 已知系统结构如下图所示: 鱼雷侧向运动方程组如式 式中,β、ωy、ψ、Ψ、Xe、Ze分别为鱼雷侧滑角、偏航角速度、偏航舵角、航向角、弹道偏角、速度、地面系中的X轴和Y轴坐标。 鱼雷作匀速运动Vm=25m/s,初始条件: β(0)=ωy(0)=ψ(0)=Ψ(0)=Xe(0)=Ze(0)=δr(0)=0,Vm(0)=25m/s 目标运动方程组如下: 式中,ΨT、ωT、XT、ZT分别为目标弹道偏角、回旋角速度、纵向距离和侧向距离。 初始条件: VT=5m/s,XT(0)=YT(0)=1500m,ωT(0)=0。 T<70s时,ΨT=ΨT(0)=0.4弧度,目标作匀速运动。 T>=70s时,ωT=-0.1rad/s,目标开始做回旋机动。 鱼雷与目标相对距离为 ΔX=XT-Xe,ΔZ=ZT-Ze,视线角定义为 Q=atan(-ΔZ/ΔX) Q为地球视线角,或η=q-ψ,η为雷体系中的提前角。 鱼雷尾追法的操舵规律为δr=-kη,k-比例系数,k=0.5,|δr|<=10deg。 终端脱靶量为系统终端时刻tF所对应的最小距离,rtf=sqrt(ΔX2+ΔZ2)。 参考程序: Torpedo2ship.m functiondx=torpedo2ship(t,x) delr=0.5*(x(3)-atan((x(5)-x(8))/(x(7)-x(4)))); ifabs(delr)>10*0.0175 delr=sign(delr)*0.175; end ift<=70 omigat=0;%targetmoveindirectlineelse else omigat=-.1;%targetmaneuver end dx=[-5.8*x (1)+0.19*x (2)-3.61*delr; 92.425*x (1)-15*x (2)-119.84*delr; x (2); 25*cos(x(3)-x (1)); -25*sin(x(3)-x (1)); omigat; 5*cos(x(6)); -5*sin(x(6))]; trajectory.m x0=[000000.415001500]; [t,x]=ode45(@torpedo2ship,[0,97],x0); plot(x(: 4),x(: 5),x(: 7),x(: 8)); legend('Torpedo','Warship',-1); delx=x(: 4)-x(: 7); delz=x(: 5)-x(: 8); delx2=delx.^2; delz2=delz.^2; rtf=min(sqrt(delx2+delz2)) 3、控制系统的仿真研究 已知单位反馈系统的开环传递函数为 ,求 a.系统的闭环传递函数。 b.系统的单位阶跃响应。 c.绘制系统的波特图。 d.绘制系统关于K的根轨迹。 (传递函数tf,阶跃响应step,波特图bode,根轨迹rlocus) e.加入校正环节 ,重复问题a、b、c、d。 参考程序: g=zpk([],[0-6-2],180*6*2) phai=feedback(g,1) subplot(231),step(phai) subplot(232),margin(g) subplot(233),rlocus(g) gc=zpk([-1/1.28,-1/0.5],[-1/64,-100],1.28*0.5/64/0.01) ggc=gc*g phaic=feedback(ggc,1) subplot(234),step(phaic) subplot(235),margin(ggc) subplot(236),rlocus(ggc) 思考: 为校正系统稳定吗? 校正后系统的超调量为多少? 相位裕度为多少? 实验4Simulink环境下控制/电路系统仿真 一、实验目的 1、学习了解Simulink语言环境 2、练习Simulink环境下的连续控制系统仿真。 3、练习Simulink环境下的电路系统仿真。 二、实验内容 1、熟悉Simulink仿真环境 a、点击Matlab上的Simulink图标进入Simulink环境 b、浏览常用模块库: 信号源模块组(Sources) 连续系统模块组(Continuous) 数学运算模块组(Mathoperations) 输出池模块组(Sinks) c、快速浏览其它模块库 d、点击Simulinklibrarybrowser下面的创建新模型图标,打开一个空白的新模型。 e、从Sources中寻找Step模块,在Continuous中寻找Integrator模块,在Sinks中寻找Scope模块,在Mathoperations中寻找Sum模块,并把它们分别拖入新模型窗口并连线。 f、双击Step模块,把Steptime设置为0。 双击Sum图标,把listofsigns修改成|+-。 g、点击开始仿真图标。 h、双击Scope模块观察仿真结果。 2、连续控制系统仿真 问题描述: 已知R1=2k,C1=.01,R2=1k,C2=.005 要求: 仿真该系统的阶跃响应和斜坡响应,仿真时间为200秒。 实验步骤: a、搭建Simulink仿真模型 b、设置各模块的参数 c、设置仿真时间和微分方程解法 d、用示波器观察响应 参考程序: 在CommandWindow窗口输入R1、C1、R2、C2的值。 另: 求和模块变换方向小技巧: 把求和模块中的ListofSigns设置为-+|。 3、使用Simulink的SimPowerSystems模块集实现电路仿真 问题描述: 如图所示电路,已知C1=0.5F,R2=R3=2Ω,L4=1H,Us=10cos(t),Is(t)=5cos(t),求电流源两端的电压。 图4.1用Simulink实现的电路仿真系统 实验内容和步骤: a、使用Simulink的SimPowerSystems模块集构成图4.1所示的仿真系统,设置元件参数。 b、设置仿真时间为20秒 c、观察并纪录仿真结果 实验5Simulink环境下弹道/保险机构仿真 一、实验目的 A、使用Simulink实现弹道仿真。 B、使用Simulink和StateFlow实现后坐保险机构仿真。 二、实验内容 A、弹道仿真 弹道模型同实验3。 要求根据所给出的弹道方程使用Simulink构成仿真系统,调试并对仿真结果做出合理的解释。 参考程序: 弹道仿真模型图如下: 参数设置为: Step模块: Steptime=70s,Finalvalue=-0.1 Psai模块: initialcondition=0.4 XtZt模块: initialcondition=[1500;1500] Saturation模块: upperlimit=10/57.3;lowerlimit=10/57.3; XeZe模块: initialcondition=[0;0] A=[-5.80.190;92.425-150;010] B=[-3.61;-119.84;0] Beta模块: initialcondition=[0;0;0] Toworkspace模块: Saveformat设置为array; 仿真时间: 1000s 积分方法: Ode45 在完成仿真之后,在CommandWindow运行绘图命令: >>plot(torpedo(: 1),torpedo(: 2),ship(: 1),ship(: 2)) B、后坐保险机构仿真* 1、基本原理: 后坐保险机构是由惯性筒、弹簧、上钢珠、下钢珠等组成。 当后坐力大于弹簧张力时,惯性筒开始向下运动,直到撞击到限位底板,在此期间,上钢珠脱落。 随着后坐力减小,在某一时刻,弹簧张力大于后坐力,惯性筒开始向上运动,直到撞击到限位顶板。 在略去摩擦力的情况下,一个后坐保险机构的解除保险时间由管形同质量、弹簧刚度、弹簧与压缩量、管形同向下行程、上钢珠直径等参数决定。 2、已知条件: M–惯性桶等效质量,2.4598x10-3千克 R’–弹簧刚度,159.53; λ0–弹簧预压缩量,1.352x10-2米; l1–惯性桶下降到底的行程,6.24x10-3米; d–上钢珠直径,4.5x10-4米; 弹丸在膛内时间为8.02292x10-3秒。 弹丸加速度的等间隔采样结果为 a=9.8*1e4*[0.273.472.714.8831.051.191.231.271.221.251.10.783.796.631 .649.445.436.608.268.367.349.324.588.494.1570]m/s2 3、数学模型: 状态机模型: 根据后坐保险结构运动的基本原理,我们可以把后坐保险机构的运动分成5个状态: 安全状态(惯性筒顶住上钢珠)、惯性筒下行状态、惯性筒到达底部并保持状态、惯性筒上行状态、惯性筒到达顶部并保持(解除保险),各个状态之间转换的条件如下图所示。 状态机模型 参考坐标系 以惯性筒弹簧的自由位置为坐标原点、以弹头方向为正定义坐标系,则在各个状态内惯性筒连续运动的方程为: 安全状态: ( <0),x0=-λ0 下行状态: ( >0,-l1-λ0 静止状态: ( >0,x=-l1-λ0) 上行状态: ( <0,-l1-λ0 解保状态: ( <0,x=-λ0+d) 参考程序: 仿真模型结构图 Anti-Force模块内部结构 状态机设置 通过Mydata.m程序给定Simulink模型所需要的参数和数据: Rp=159.53%弹簧刚度 m=2.4598e-3%惯性体质量kg lamda0=1.352e-2%预压缩量m d=4.5e-4%弹丸直径m l1=7e-3%下行行程m t1=8.02292e-3%膛内时间s %膛内加速度等距采样数据 at=9.8*1e4*[0.273.472.714.8831.051.191.231.271.221.251.10.783.796.631.649.445.436.608.268.367.349.324.588.494.1570]; t=0: t1/26: t1;ac=[t’,at']
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机仿真 实验 说明书 修改稿