中南大学数学建模实验报告

中南大学数学建模实验报告
中南大学数学建模实验报告

MATLAB数学建模实验报告

学院:材料科学与工程

专业班级:材料国际

姓名:

学号:

完成时间:2016年12月7日

目录

一、数学实验学习体会 (3)

二、实验一:MATLAB作图 (4)

实验目的 (4)

实验内容 (4)

三、实验二:线性规划 (7)

实验目的 (7)

实验内容 (7)

四、实验三:插值 (11)

实验目的 (11)

实验内容 (11)

五、实验四:拟合 (12)

实验目的 (12)

实验内容 (12)

六、实验五:MATLAB在材料力学里的应用 (14)

实验目的 (14)

实验内容 (15)

七、实验六:MATLAB创建2048小游戏 (19)

游戏规则 (20)

游戏代码及运行结果 (20)

八、心得与收获 (26)

一、数学实验学习体验

通过对《数学实验与建模》这门课程的学习,我初步掌握了一些建模思想、模型分析以及对于数学矩阵实验室(即:MATLAB软件)的使用。课程分为两个阶段,即八周的数学建模讲授、八周的数学实验。在这里,主要谈一谈运用MATLAB软件进行的数学实验给我带来的感受与收获。

通过学习,我们知道MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。正如这些强大的功能,我们才有必要认真学习并掌握这项技能,我的专业是材料科学与工程,矩阵运算和处理实验数据对于我的专业领域大有裨益,这也坚定了我熟练掌握MATLAB的决心。

我做的第一个实验是图形的绘制。这在Microsoft软件中也可以实现,而MATLAB给我带来的直观感受就是更加“强大、丰富、专业”,不仅包含了二维三维,甚至多维度空间图形也能表现出来。还可对坐标控制、图形修饰、窗口分割等操作,如果特殊需要时还可用polar得到极坐标图形,调用semilogx得到对数坐标函数等。三维图形有三维曲线、三维曲面,这种功能对求两个复杂三维立体图形的交线交面等很有帮助。在二维图形绘制时可以绘出条形图、杆图、饼图,当然也可以调用函数bar3、stem3、pie3、fill3等绘制三维图形。对三维图形可以进行精细处理,比如视点处理,色彩处理,还可以进行图形的裁剪,在实际生活中也很有用。

另外一个让我影响深刻的功能就是数据处理,对于材料科学的科研工作,往往需要在大量实验数据里找到一定规律,从而揭示一种材料性能的影响因素,实现对材料性能的调控。而从MATLAB中最初学习到的就是插值与拟合,种类丰富,处理也十分精确,还可以自定义插值、拟合函数,最后通过plot以图形的形式展现出来。对于数据规律性的探讨十分有帮助。

通过这么短时期的学习,是很难理解到MATLAB的精髓的,要想从使用到理解到熟练掌握还需要一个很长的学习探索过程,我相信,MATLAB软件不仅将对我的科研领域起到重要的作用,还将为我处理生活问题带来便捷。

二、实验一:MATLAB作图

1.实验目的:

了解MATLAB作图的基本内容

掌握MATLAB作图的集中基本方式,实现对数据进行可视化作图分析2.实验内容:

(1)例:在[0,2pi]用红线画sin x,用绿圈画cos x.

x=linspace(0,2*pi,30);

y=sin(x);

z=cos(x);

plot(x,y,'r',x,z, 'g0')

先建M文件myfun1.m:

function Y=myfun1(x)

Y=exp(2*x)+sin(3*x.^2)

再输入命令:

fplot('myfun1',[-1,2])

(3)例:画多条曲线观察函数Z=(X+Y)2 x=-3:0.1:3;y=1:0.1:5;

[X,Y]=meshgrid(x,y);

Z=(X+Y).^2;

plot3(X,Y,Z)

(4)例:画函数Z=(X+Y)2的图形.

x=-3:0.1:3;

y=1:0.1:5;

[X,Y]=meshgrid(x,y);

Z=(X+Y).^2;

surf(X,Y,Z)

shading flat

(5)例:在区间[0,2π]画sin(x)的图形,并加注图例“自变量X”、“函数Y”、“示

意图”, 并加格栅.

x=linspace(0,2*pi,30);

y=sin(x);

plot(x,y)

xlabel('自变量X')

ylabel('函数Y')

title('示意图')

grid on

(6)例:山峰的三维和二维等值线图

[x,y,z]=peaks;

subplot(1,2,1)

contour3(x,y,z,16,'s')

grid, xlabel('x-axis'),ylabel('y-axis')

zlabel('z-axis')

title('contour3 of peaks');

subplot(1,2,2)

contour(x,y,z,16,'s')

grid, xlabel('x-axis'), ylabel('y-axis')

title('contour of peaks');

三、实验二:线性规划

1.实验目的:

了解线性规划的基本内容.

掌握用数学软件包求解线性规划问题

2.实验内容:

(1)例: max 6543216.064.072.032.028.04.0x x x x x x z +++++= 123456s.t.0.010.010.010.030.030.03850x x x x x x +++++≤ 70005.002.041≤+x x 10005.002.052≤+x x 90008.003.063≤+x x

1,2,,6j x j ≥=

解:编写M 文件xxgh1.m 如下:

c=[-0.4 -0.28 -0.32 -0.72 -0.64 -0.6];

A=[0.01 0.01 0.01 0.03 0.03 0.03;0.02 0 0 0.05 0 0;0 0.02 0 0 0.05 0;0 0 0.03 0 0

0.08];

b=[850;700;100;900]; Aeq=[]; beq=[];

vlb=[0;0;0;0;0;0]; vub=[];

[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)

运算结果如下:

(2)例:投资的收益和风险

二、 基本假设和符号规定

一、问题提出

市场上有n 种资产i s (i =1,2,…,n )可以选择,现用数额为M 的相当大的资金作一个时期的投资.这n 种资产在这一时期内购买i s 的平均收益率为i r ,风险损失率为i q ,投资越分散,

总的风险越小,总体风险可用投资的i s 中最大的一个风险来度量.

购买i s 时要付交易费,(费率

i p ),当购买额不超过给定值i u 时,交易费按购买i u 计算.

另外,假定同期银行存款利率是0r ,既无交易费又无风险.(0r =5%) 已知n =4

试给该公司设计一种投资组合方案,即用给定的资金M ,有选择地购买若干种资产或存银行生

息,使净收益尽可能大,使总体风险尽可能小.

基本假设:

1. 投资数额

M 相当大,为了便于计算,假设M =1; 2.投资越分散,总的风险越小; 3.总体风险用投资项目i s 中最大的一个风险来度量; 4.n 种资产i s 之间是相互独立的;

5.在投资的这一时期内, r i ,p i ,q i ,r 0为定值,不受意外因素影响; 6.净收益和总体风险只受 r i ,p i ,q i 影响,不受其他因素干扰.

符号规定: S i ——第i 种投资项目,如股票,债券

r i ,p i ,q i ----分别为S i 的平均收益率, 交易费率,风险损失率

u i ----S i 的交易定额 0r -------同期银行利率

x i -------投资项目S i 的资金 a -----投资风险度

Q ----总体收益 ΔQ ----总体收益的增量

三、模型的建立与分析

1.总体风险用所投资的Si 中最大的一个风险来衡量,即max{ qixi|i=1,2,…,n}

4. 模型简化:

四、模型1的求解

由于a 是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度.我们从a =0开始,以步长△a =0.001进行循环搜索,编制程序如下:

2.购买S i 所付交易费是一个分段函数,即

p i x i x i >u i 交易费 = p i u i x i ≤u i

而题目所给定的定值u i (单位:元)相对总投资M 很小, p i u i 更小,

可以忽略不计,这样购买S i 的净收益为(r i -p i )x i

3.要使净收益尽可能大,总体风险尽可能小,这是一个多目标规划模型: 目标函数 max

=-n

i i i i x p r 0)( minmax{ q i x i }

约束条件 0(1)n

i i i p x =+∑

=M

x i ≥0 i =0,1,…,n

a . 在实际投资中,投资者承受风险的程度不一样,若给定风险一个界限a ,使最大的一个

风险q i x i /M ≤a ,可找到相应的投资方案. 这样把多目标规划变成一个目标的线性规划. 模型1 固定风险水平,优化收益

目标函数: Q =max ∑

+=-11

)(n i i i i x p r

约束条件: M

x q i

i ≤a ∑

=+M x p i i )1(, x i ≥ 0 i =0,1,…, n

b .若投资者希望总盈利至少达到水平k 以上,在风险最小的情况下寻找相应的投资组合.

模型2 固定盈利水平,极小化风险

目标函数: R = min{max{ q i x i }} 约束条件:∑

=-n i i i i x p r 0

)(≥k , ∑=+M x p i i )1( , x i ≥ 0 i =0,1,…,n

模型1为: minf = (-0.05, -0.27, -0.19, -0.185, -0.185) (x 0 x 1 x 2 x 3 x 4 ) T

x 0 + 1.01x 1 + 1.02x 2 +1.045x 3 +1.065x 4 =1 0.025x 1 ≤a

0.015x 2 ≤a s.t. 0.055x 3 ≤a

0.026x 4≤a x i ≥0 (i = 0,1, (4)

a=0;

while(1.1-a)>1

c=[-0.05 -0.27 -0.19 -0.185 -0.185];

Aeq=[1 1.01 1.02 1.045 1.065]; beq=[1];

A=[0 0.025 0 0 0;0 0 0.015 0 0;0 0 0 0.055 0;0 0 0 0 0.026];

b=[a;a;a;a];

vlb=[0,0,0,0,0];vub=[];

[x,val]=linprog(c,A,b,Aeq,beq,vlb,vub);

a

x=x'

Q=-val

plot(a,Q,'.'),axis([0 0.1 0 0.5]),hold on

a=a+0.001;

end

xlabel('a'),ylabel('Q')

结果:

a = 0.0030 x = 0.4949 0.1200 0.2000 0.0545 0.1154 Q = 0.1266 a = 0.0060 x = 0 0.2400 0.4000 0.1091 0.2212 Q = 0.2019 a = 0.0080 x = 0.0000 0.3200 0.5333 0.1271 0.0000 Q = 0.2112 a = 0.0100 x = 0 0.4000 0.5843 0 0 Q =0.2190

a = 0.0200 x = 0 0.8000 0.1882 0 0 Q =0.2518

a = 0.0400 x = 0.0000 0.9901 0.0000 0 0 Q =0.2673

四、实验三:插值

1.实验目的:

了解插值的基本内容.

2.实验内容:

例:

用分段线性插值法求插值,并观察插值误差.

(1)在[-6,6]中平均选取5个点作插值(xch11)

(2)在[-6,6]中平均选取11个点作插值(xch12)

6

6

,

1

1

)

(

2

-

+

=x

x

x

g

(3)在[-6,6]中平均选取21个点作插值(xch13)

(4)在[-6,6]中平均选取41个点作插值(xch14)

五、实验四:拟合

1.实验目的:

直观了解拟合基本内容.

掌握用数学软件求解拟合问题.

2.实验内容:

例: 对下面一组数据作二次多项式拟合

输入指令: x=0:0.1:1;

y=[-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; A=polyfit(x,y,2) z=polyval(A,x); plot(x,y,'k+',x,z,'r')

结果:

0317

.01293.208108.9)(2-+-=x x x f

六、MATLAB 在材料力学里的应用

1、实验目的:

通过构建可视化窗口,实现对平面问题:材料数据的直观、简便处理,得到需要的结论,具体功能如下:1.已知应变场,输入窗口后,能够得到应力场;2.已知应力场,根据材料的物性方程,判断材料是否发生屈服;3.已知某两点应力场,通过矩阵运算得到应力张量不变量,从而判断这两点是否处于同一应力状态。

数学背景与材料力学解释:

1.上述各类场量都易以矩阵形式表达,并且这些场量相互之间存在以下关系:

Mises 屈服准则:

平面应力物理方程:

斜方向应变公式:

主应力公式:

2.通过单向拉伸与扭转实验,可以测得弹性模量(E )、剪切模量(G )、泊松

)(1

y x x E

μσσε-=)

(1

x y y E

μσσε-=

G

xy

xy τγ=

?????++=++=++=xy y x N xy y x N xy y x N m l m l m l m l m l m l γ

εεεγεεεγεεε3323233

222

22221121211

比(u )、应变场量,通过这些实验数据进行运用求解,是具有实际意义的。

求解过程:

在单向拉伸实验样品上按一定角度(Lij )贴应变片(默认0度、45度、90度),得到弹性模量(E )、应变量(1N ε、2N ε、3N ε)。通过斜方向应变公式得到应变张量,再由物理方程得到应力张量。利用求出的应力场由主应力公式求得主应力,再由等效应力公式、Mises 屈服准则得到等效应力以及强度校核。

2、实验内容:

(1).功能一:“开始运算”求应力应变的实现

function pushbutton1_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) e1=str2num(get(handles.edit10,'String'))

e2=str2num(get(handles.edit11,'String'))

e3=str2num(get(handles.edit12,'String'))

u=str2num(get(handles.edit20,'String'))

E=str2num(get(handles.edit1,'String'))

res=2*e3-e1-e2

set(handles.edit16,'String',res)

set(handles.edit14,'String',e1)

set(handles.edit15,'String',e2)

G=E/(2*(1+u))

x=(u*E*e2+E*e1)/(1-u.^2)

y=(x-E*e1)/u

z=G*res

set(handles.edit17,'String',x)

set(handles.edit18,'String',y)

set(handles.edit19,'String',z)

x1=(x+y)/2+sqrt(((x-y)/2).^2+z)

y1=(x+y)/2-sqrt(((x-y)/2).^2+z)

z1=x+y+z-x1-y1

set(handles.edit21,'String',x1)

set(handles.edit26,'String',y1)

set(handles.edit27,'String',z1)

eq=sqrt(((x1-y1).^2+(y1-z1).^2+(z1-x1).^2)/2)

set(handles.edit29,'String',eq)

(2).功能二:“强度校核”功能的实现

function pushbutton3_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton3 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) s=str2num(get(handles.edit31,'String'))

e=str2num(get(handles.edit29,'String'))

if e

set(handles.edit30,'String','材料未发生屈服')

else

set(handles.edit30,'String','材料发生屈服')

end

功能三:“Clear ALL”的实现

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject handle to pushbutton2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.edit10,'String','')

set(handles.edit11,'String','')

set(handles.edit12,'String','')

set(handles.edit20,'String','')

set(handles.edit1,'String','')

set(handles.edit16,'String','')

set(handles.edit14,'String','')

set(handles.edit15,'String','')

set(handles.edit17,'String','')

set(handles.edit18,'String','')

set(handles.edit19,'String','')

set(handles.edit21,'String','')

set(handles.edit26,'String','')

set(handles.edit27,'String','')

set(handles.edit29,'String','')

set(handles.edit30,'String','')

set(handles.edit31,'String','')

3.总结与评价:

通过利用材料力学中的斜方向应变公式、物理公式、主应力公式、Mises屈服等数学概念,运用MATLAB中的GUI可视化窗口模型构建,实现了直观、简洁的处理材料力学相关实验数据的目的,输入基础实验数据,便得到了有利于材料结构设计所需要的基本力学参量、也能对材料力学性能的评价起到重要作用。十分具有实际意义。

问题在于,这里处理的是平面问题,尤其是平面应力问题,可以推广到三维应力应变问题;而且斜方向应变公式也是取用的0度、45度、90度特殊方向。对于学习、验证某些普通应变情况不适用,但对于实验,我们可以认为控制这些变量,如:采用一定长宽比的长薄板,控制为平面应力状态,且由圣维南原理知薄板中部均匀受力;按特殊方向帖应变片。

七、MATLAB创建2048小游戏

1游戏规则:

1).通过按键(W,A,S,D或方向键)控制小块的移动方向,当有两个小块相同时,把两者合并,产生一个新块(其值90%为2,10%为4),给予一定的分数,并将分数记录在数据文件中,显示在界面上。

2).当最大块的值达到2048时,您将获得胜利,胜利后您可以选择继续游戏(当最大块的值为4096时,您将获得连胜,依次类推),或者退出游戏(下次游戏时从退出时的界面开始)。

3).但是,如果小块不能再移动,您将输掉该游戏,此时,您可以选择新游戏或者退出游戏(下次游戏时重新开始)。

4).在游戏过程中,您都有权停止游戏(按Esc键或者直接关闭界面),下次打开该游戏时将回到本次停止的状态,以便您继续游戏,当然你也可以随时新建游戏。5).该游戏为了增加游戏的观赏性,在工具栏内特为您增加了几项设置,如新建游戏、游戏界面截图、动画、声音、演示、游戏得分记录等,您可以按照您的喜好进行设置。

6).游戏还增加了数据分析的功能,您可以查看当前统计,也可以查看历史记录(只要您没有删除他们)。

7).为了降低游戏难度,本游戏还提供了提示功能,按“空格”键即可提示,但连续按下空格键的时间间隔不得少于1s,否则会卡住,影响娱乐效果。

8).游戏还提供了演示功能,您可以设置电脑演示步数,让电脑替您玩游戏。大概960步可以完成2048(只要小块可以一直移动)。

9).由于AI提示程序在个别情况下无法得出最佳的移动策略,在这些情况下,您可以选择工具栏中“炸弹”按钮,用鼠标左键选中一个块将其炸掉(您无法在游戏开始时炸掉界面内唯一的块),然后继续您的游戏,当您想取消炸弹时,可以在游戏界面中点击鼠标右键。作为炸掉有数字的块的惩罚,您将损失该块的分数。原则上您可以炸毁界面内所有的数字块,但若界面内的块均被您炸掉,则游戏终止(除非您再次新建游戏)。

10).点击“炸弹”按钮后,您也可以继续您的游戏,移动几步后再进行炸毁小块,比

如AI演示时进行炸毁操作。如果该小块没有数值,则炸毁无效,不扣分。若您出现无法移动的情况,在您使用“炸弹”按钮前,请不要在弹出的对话框中选择“新游戏”或“退出”,直接点击对话框红色“×”号关闭对话框后再使用炸毁功能,否则游戏将结束或关闭,而无法继续该局游戏。

2、游戏代码与运行结果

(1).构建主坐标轴

handles.hAx = axes(...

'Parent', handles.hFig, ... % 父对象为handles.hFig

'Units', 'Pixels', ... % 单位像素

'Position', [10 10 400 400], ... % 位置

'Color', [187 173 160]/255, ... % 背景颜色

'XLim', [0 4], ... % X轴范围

'YLim', [0 4], ... % Y轴范围

'XTick', [], ... % X轴刻度为空

'YTick', [], ... % Y轴刻度为空

'XColor', [187 173 160]/255, ... % X轴颜色

'YColor', [187 173 160]/255, ... % Y轴颜色

'Box', 'on', ... % 显示边框

'XTickLabel', [], ... % X轴刻度标签为空

'YTickLabel', [], ... % Y轴刻度标签为空

'PlotBoxAspectRatio', [1 1 1]);

handles.hScore = uicontrol(...

'Parent', handles.hFig, ... % 父对象为handles.hFig

'Units', 'Pixels', ... % 单位像素

'Position', [10 415 200 50], ... % 位置

'Style', 'Text', ... % 类型为text

'FontUnits', 'Pixels', ... % 字体单位像素

'FontSize', 14, ... % 字体大小14号

'HorizontalAlignment', 'left', ... % 对齐方式左对齐

'BackgroundColor', get(handles.hFig, 'Color'), ... % 背景颜色

'String', sprintf('Score: 0\nBest: %d', handles.Best)); % 显示文本

handles.hMoves = uicontrol(...

'Parent', handles.hFig, ... % 父对象为handles.hFig

'Units', 'Pixels', ... % 单位为像素

'Position', [300 415 120 50], ... % 位置

'Style', 'Text', ... % 类型为text

'FontUnits', 'Pixels', ... % 字体单位像素

'FontSize', 14, ... % 字体大小14号

中南大学C++实验报告

《C++程序设计》上机实验报告 上机内容:C++程序的运行环境和运行一个C++程序的方法 数据类型和表达式 专业班级:电气信息类1203班 学号:0909120320 姓名:李湖 日期:2013年3月16日

目录 1.实验目的 2.实验内容 3.程序源码 4.调试结果 5.实验心得

程序设计实验(一) 1、实验目的 (1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。 (2)了解在该系统上如何编辑、编译、连接和运行一个C程序 (3)通过运行简单的C++程序,初步了解C++源程序的结构和特点。 应学会在一种以上的编译环境下运行C++的程序,建议学习并 掌握Visual C++ 6.0和GCC(RHIDE和DJGPP)的使用方法。2、实验内容和步骤 (1)检查所用所用的计算机系统是否已安装了C++编译系统,并确定他所在的子目录。如果使用的是Windows操作系 统,可以按以下步骤进行: 如果想查找Visual C++ 6.0,可以单击Windows桌面上“开 始”按钮,在菜单中选择“查找”窗口,在“名称”栏中 输入文件名“Microsoft Visual C++ 6.0”,请注意搜索范围, 应当使“搜索”栏中的内容为“C:\”,表示从C盘根目录 开始寻找,即搜索整个C盘。单击“开始查找”按钮, 系统会自动在指定的范围内找寻所需的文件,如果找到, 就会显示出文件路径,如“C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0,表示在

C:\Windows 000\Start Mean\Program\Microsoft Visual Studio 6.0文件中有Visual C++ 6.0。也可以选择Windows 桌面上的“开始”—>“程序”命令,在其弹出的菜单中 选择“Microsoft Visual Studio 6.0”命令,再在其子菜单中 查有无“Microsoft Visual C++ 6.0”命令。如果在安装时采 用系统提供的默认方式安装,应该在这个位置找到 Microsoft Visual C++ 6.0。 如果想查找RHIDE和DJGPP,只须选择“开始”—>“查找(F)”—>“文件或文件夹(F)”命令,并指定RHIDE 和DJGPP即可。 (2)在Visual C++环境下编译和运行C++程序。 在第一次上机时,按以下步骤建立和运行C++程序: ①先进入Visual C++ 6.0环境。 ②按照第15章15.2节介绍的方法,在自己指定的子目录中 建立一个名为test.cpp的新文件(此事尚未向文件输入内 容)。 ③从键盘输入以下程序(第1章第8题): int main(); { int a,b; c=a+b; cout>>”a+b=”>>a+b;

数学建模实验报告

在下面的题目中选做100分的题目,给出详略得当的答案。 一.通过举例简要说明数学建模的一般过程或步骤。(15分) 答:建立数学模型的方法大致有两种,一种是实验归纳的方法,即根据测试或计算数据,按照一定的数据,按照一定的数学方法,归纳出系统的数学模型;另一种是理论分析的方法,具体步骤有五步(以人口模型 为例): 1、明确问题,提出合理简化的假设:首先要了解问题的实际背景,明确题目的要求,收集各种必要的信息 2、建立模型:据所做的假设以及事物之间的联系,构造各种量之间的关系。(查资料得出数学式子或算法)。 3、模型求解:利用数学方法来求解上一步所得到的数学问题,此时往往还要做出进一步的简化或假设。注意要尽量采用简单的数学公具。例如:马尔萨斯模型,洛杰斯蒂克模型 4、模型检验:根据预测与这些年来人口的调查得到的数目进行对比检验 5、模型的修正和最后应用:所建立的模型必须在实际应用中才能产生效益,根据预测模型,制定方针政策,以实现资源的合理利用和环境的保护。 二.把一张四条腿等长的正方形桌子放在稍微有些起伏的地面上,通常只有三只脚着地,然而 只需稍为转动一定角度,就可以使四只脚同时着地,即放稳了。(1) 请用数学模型来描述和证明这个实际问题; (2)讨论当桌子是长方形时,又该如何描述和证明?(15分) 答: 模型假设: 1.椅子四条腿一样长,椅脚与地面的接触部分相对椅子所占的地面面积可视为一个点。 2.地面凹突破面世连续变化的,沿任何方向都不会出现间断(没有向台阶那样的情况),即地面可看作数学上的连续曲面。 3.相对椅脚的间距和椅子腿的长度而言,地面是相对平坦的,即使椅子在任何位置至少有三条腿同时着地。4.椅子四脚连线所构成的四边形是圆内接四边形,即椅子四脚共圆。 5.挪动仅只是旋转。 我们将椅子这两对腿的交点作为坐标原点,建立坐标系,开始时AC、BD这两对腿都在坐标轴上。将AC和BD这两条腿逆时针旋转角度θ。记AC到地面的距离之和为f(θ)。记BD到 地面的距离之和为g(θ)。易得f(θ),g(θ)至少有一个为零。

中南大学数据结构实验报告(六)

实验六 1.需求分析 2.二分查找算法(设计性实验) 问题描述 从键盘读入一串整数和一个待查键,查找在该整数串中是否有这个待查键。如果有,就输出它在 整数串中的位置;如果没有,输出1。 基本要求 掌握二分查找算法。 测试数据 由读者依据软件工程的测试技术自己确定。注意测试边界数据,如单个结点。 实现提示 利用二分查找算法查找实现。 4.简单个人电话号码查询系统(综合性实验) 问题描述 人们在日常生活中经常要查找某个人或某个单位的电话号码,本实验将实现一个简单的个人电话 号码查询系统,根据用户输入的信息(如姓名等)进行快速查询。 基本要求 (1) 在外存上,用文件保存电话号码信息。 (2) 在内存中,设计数据结构存储电话号码信息。 (3) 提供查询功能:根据姓名实现快速查询。 (4) 提供其他维护功能,如插入、删除、修改等。 测试数据 由读者依据软件工程的测试技术自己确定。注意测试边界数据,如单个结点。 实现提示 由于要管理的电话号码信息较多,而且要在程序运行结束后仍然保存电话号码信息,所以电话号码 信息采用文件的形式存放到外存中。在系统运行时,要将电话号码信息从文件调入内存来进行查找等操作。为了接收文件中的内容,要有一个数据结构与之对应,可以设计如下结构类型的数组来接收数据。const int max=10; struct TeleNumber { String name;// 姓名 String phoneNumber,// 固定电话号码 String mobileNumber,// 移动电话号码 String email;// 电子邮箱 }Tele[max]; 为了实现对电话号码的快速查询,可以将上述结构数组排序,以便应用二分查找,但是,在数组 中实现插入和删除操作的代价较高。如果记录需频繁进行插入或删除操作,可以考虑采用二叉排序树组织电话号码信息,这样查找和维护都能获得较高的时间性能。更复杂地,需考虑该二叉排序树是否平衡,如何使之达到平衡。

数学建模实验报告

数学建模实验报告

一、实验目的 1、通过具体的题目实例,使学生理解数学建模的基本思想和方法,掌握 数学建模分析和解决的基本过程。 2、培养学生主动探索、努力进取的的学风,增强学生的应用意识和创新 能力,为今后从事科研工作打下初步的基础。 二、实验题目 (一)题目一 1、题目:电梯问题有r个人在一楼进入电梯,楼上有n层。设每个 乘客在任何一层楼出电梯的概率相同,试建立一个概率模型,求直 到电梯中的乘客下完时,电梯需停次数的数学期望。 2、问题分析 (1)由于每位乘客在任何一层楼出电梯的概率相同,且各种可能的情况众多且复杂,难于推导。所以选择采用计算机模拟的 方法,求得近似结果。 (2)通过增加试验次数,使近似解越来越接近真实情况。 3、模型建立 建立一个n*r的二维随机矩阵,该矩阵每列元素中只有一个为1,其余都为0,这代表每个乘客在对应的楼层下电梯(因为每 个乘客只会在某一层下,故没列只有一个1)。而每行中1的个数 代表在该楼层下的乘客的人数。 再建立一个有n个元素的一位数组,数组中只有0和1,其中1代表该层有人下,0代表该层没人下。 例如: 给定n=8;r=6(楼8层,乘了6个人),则建立的二维随机矩阵及与之相关的应建立的一维数组为: m = 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 c = 1 1 0 1 0 1 1 1 4、解决方法(MATLAB程序代码):

n=10;r=10;d=1000; a=0; for l=1:d m=full(sparse(randint(1,r,[1,n]),1:r,1,n,r)); c=zeros(n,1); for i=1:n for j=1:r if m(i,j)==1 c(j)=1; break; end continue; end end s=0; for x=1:n if c(x)==1 s=s+1; end continue; end a=a+s; end a/d 5、实验结果 ans = 6.5150 那么,当楼高11层,乘坐10人时,电梯需停次数的数学期望为6.5150。 (二)题目二 1、问题:某厂生产甲乙两种口味的饮料,每百箱甲饮料需用原料6 千克,工人10名,可获利10万元;每百箱乙饮料需用原料5千 克,工人20名,可获利9万元.今工厂共有原料60千克,工人 150名,又由于其他条件所限甲饮料产量不超过8百箱.问如何 安排生产计划,即两种饮料各生产多少使获利最大.进一步讨 论: 1)若投资0.8万元可增加原料1千克,问应否作这项投资. 2)若每百箱甲饮料获利可增加1万元,问应否改变生产计划. 2、问题分析 (1)题目中共有3个约束条件,分别来自原料量、工人数与甲饮料产量的限制。 (2)目标函数是求获利最大时的生产分配,应用MATLAB时要转换

操作系统实验报告-中南大学

操作系统原理试验报告 班级: 学号: 姓名:

实验一:CPU调度 一、实验内容 选择一个调度算法,实现处理机调度。 二、实验目的 多道系统中,当就绪进程数大于处理机数时,须按照某种策略决定哪些进程优先占用处理机。本实验模拟实现处理机调度,以加深了解处理机调度的工作。 三、实验题目 1、设计一个按优先权调度算法实现处理机调度的程序; 2、设计按时间片轮转实现处理机调度的程序。 四、实验要求 PCB内容: 进程名/PID; 要求运行时间(单位时间); 优先权; 状态: PCB指针; 1、可随机输入若干进程,并按优先权排序; 2、从就绪队首选进程运行:优先权-1/要求运行时间-1 要求运行时间=0时,撤销该进程 3、重新排序,进行下轮调度 4、最好采用图形界面; 5、可随时增加进程; 6、规定道数,设置后备队列和挂起状态。若内存中进程少于规定道数,可自动从后备 队列调度一作业进入。被挂起进程入挂起队列,设置解挂功能用于将指定挂起进程解挂入就绪队列。 7、每次调度后,显示各进程状态。 实验二:内存管理 一、实验内容 主存储器空间的分配和回收 二、实验目的 帮助了解在不同的存储管理方式下,应怎样实现主存空间的分配和回收。 三、实验题目 在可变分区管理方式下,采用最先适应算法实现主存空间的分配和回收。

四、实验要求 1、自行假设主存空间大小,预设操作系统所占大小并构造未分分区表; 表目内容:起址、长度、状态(未分/空表目) 2、结合实验一,PCB增加为: {PID,要求运行时间,优先权,状态,所需主存大小,主存起始位置,PCB指针} 3、采用最先适应算法分配主存空间; 4、进程完成后,回收主存,并与相邻空闲分区合并 .1、Vo类说明(数据存储结构) 进程控制块PCB的结构: Public class PCB{ //进程控制块PCB,代表一个进程 //进程名,作为进程的标识; private String name; //要求运行时间,假设进程运行的单位时间数; private int time; //赋予进程的优先权,调度时总是选取优先数小的进程先执行; private int priority; //状态,假设有“就绪”状态(ready)、“运行”状态(running)、 //“后备”状态(waiting)、“挂起”状态(handup) private String state; //进程存放在table中的位置 private int start; //进程的大小 private int length; //进程是否进入内存,1为进入,0为未进入 private int isIn; //进程在内存中的起始位置 private int base; //进程的大小 private int limit; //一些get和set方法以及构造器省略… };

数学建模实验报告

数学建模实验报告 实验一计算课本251页A矩阵的最大特征根和最大特征向量 1 实验目的 通过Wolfram Mathematica软件计算下列A矩阵的最大特征根和最大特征向量。 2 实验过程 本实验运用了Wolfram Mathematica软件计算,计算的代码如下:

3 实验结果分析 从代码的运行结果,可以得到最大特征根为5.07293,最大特征向量为 {{0.262281},{0.474395},{0.0544921},{0.0985336},{0.110298}},实验结果 与标准答案符合。

实验二求解食饵-捕食者模型方程的数值解 1实验目的 通过Wolfram Mathematica或MATLAB软件求解下列习题。 一个生物系统中有食饵和捕食者两种种群,设食饵的数量为x(t),捕食者为y(t),它们满足的方程组为x’(t)=(r-ay)x,y’(t)=-(d-bx)y,称该系统为食饵-捕食者模型。当r=1,d=0.5,a=0.1,b=0.02时,求满足初始条件x(0)=25,y(0)=2的方程的数值解。 2 实验过程 实验的代码如下 Wolfram Mathematica源代码: Clear[x,y] sol=NDSolve[{x'[t] (1-0.1y[t])x[t],y'[t] 0.02x[t]y[t]-0.5y[t],x[0 ] 25,y[0] 2},{x[t],y[t]},{t,0,100}] x[t_]=x[t]/.sol y[t_]=y[t]/.sol g1=Plot[x[t],{t,0,20},PlotStyle->RGBColor[1,0,0],PlotRange->{0,11 0}] g2=Plot[y[t],{t,0,20},PlotStyle->RGBColor[0,1,0],PlotRange->{0,40 }] g3=Plot[{x[t],y[t]},{t,0,20},PlotStyle→{RGBColor[1,0,0],RGBColor[ 0,1,0]},PlotRange->{0,110}] matlab源代码 function [ t,x ]=f ts=0:0.1:15; x0=[25,2]; [t,x]=ode45('shier',ts,x0); End function xdot=shier(t,x)

中南大学机械基础实验报告机类

机械基础实验报告 (机械类) 中南大学机械基础实验教学中心 2011年8月 目录 训练一机构运动简图测绘 (1) 实验二动平衡实验 (3) 实验三速度波动调节实验 (4) 实验四机构创意组合实验 (5) 实验五平面机构创新设计及运动测试分析实验 (6) 实验六螺栓联接静动态实验 (7) 实验七螺旋传动效率实验 (8) 实验八带传动实验 (9) 实验九液体动压轴承实验 (10) 实验十机械传动性能综合测试实验 (12) 实验十一滚动轴承综合性能测试分析实验 (13) 实验十二机械传动设计及多轴搭接实验 (14) 实验十三减速器拆装实验 (15)

训练一机构运动简图测绘 专业班级第组姓名成绩 1.一个正确的“机构运动简图”应能说明哪些内容?绘制机构运动简图的基本步骤是什么? 2.机构自由度与原动件的数目各为多少?当机构自由度=原动件的数目,机构的

运动是否确定? 五.收获与建议

实验二动平衡实验 专业班级第组姓名成绩一、实验目的: 二?设备名称: 三?实验数据 实验转速: 四.思考题: 转子动平衡为什么要在左右两个平面上进行平衡?

实验三速度波动调节实验专业班级第组姓名成绩一?实验目的: 二?设备名称: 三?实验数据 1?当转速不变时,采用不同的飞轮,数据记录: 结论:当转速不变时,飞轮转动惯量越大,则机构的速度波动越二?当飞轮不变时,转速变化,数据记录: 结论:当飞轮不变时,转速越大,则机构的速度波动越

实验四机构创意组合实验 专业班级第组姓名成绩 一、机构运动简图(要求符号规范标注参数) 二、机构的设计方案图(复印件) 三、机构有____________个活动构件?有______个低副,其中转动副_______个, 移动副__________个,有____________复合铰链,在_________处?有________处?有__________个虚约束,在__________处? 四、机构自由度数目为F=3n-2PL-PH=3X-2X-0= 五、机构有_________个原动件 在___________处用__________驱动,在__________处用___________驱动? 六、针对原设计要求,按照实验结果简述机构的有关杆件是否运动到位?曲柄是 否存在?是否实现急回特性?最小传动角数值?是否有“卡住”现象?(原无要求的项目可以不作涉及) 七、指出在机构中自己有所创新之处? 八、指出机构的设计存在的不足之处,简述进一步改进的设想?

数学建模与数学实验报告

数学建模与数学实验报告 指导教师__郑克龙___ 成绩____________ 组员1:班级______________ 姓名______________ 学号_____________ 组员2:班级______________ 姓名______________ 学号______________ 实验1.(1)绘制函数cos(tan())y x π=的图像,将其程序及图形粘贴在此。 >> x=-pi:0.01:pi; >> y=cos(tan(pi*x)); >> plot(x,y) -4 -3 -2 -1 1 2 3 4 -1-0.8-0.6-0.4-0.200.20.40.60.8 1 (2)用surf,mesh 命令绘制曲面2 2 2z x y =+,将其程序及图形粘贴在此。(注:图形注意拖放,不要太大)(20分) >> [x,y]=meshgrid([-2:0.1:2]); >> z=2*x.^2+y.^2; >> surf(x,y,z)

-2 2 >> mesh(x,y,z) -2 2 实验2. 1、某校60名学生的一次考试成绩如下:

93 75 83 93 91 85 84 82 77 76 77 95 94 89 91 88 86 83 96 81 79 97 78 75 67 69 68 84 83 81 75 66 85 70 94 84 83 82 80 78 74 73 76 70 86 76 90 89 71 66 86 73 80 94 79 78 77 63 53 55 1)计算均值、标准差、极差、偏度、峰度,画出直方图;2)检验分布的正态性;3)若检验符合正态分布,估计正态分布的参数并检验参数. (20分) 1) >> a=[93 75 83 93 91 85 84 82 77 76 77 95 94 89 91 88 86 83 96 81 79 97 78 75 67 69 68 84 83 81 75 66 85 70 94 84 83 82 80 78 74 73 76 70 86 76 90 89 71 66 86 73 80 94 79 78 77 63 53 55]; >> pjz=mean(a) pjz = 80.1000 >> bzhc=std(a) bzhc = 9.7106 >> jc=max(a)-min(a) jc = 44 >> bar(a)

数学建模实验报告第十一章最短路问答

实验名称:第十一章最短路问题 一、实验内容与要求 掌握Dijkstra算法和Floyd算法,并运用这两种算法求一些最短路径的问题。 二、实验软件 MATLAB7.0 三、实验内容 1、在一个城市交通系统中取出一段如图所示,其入口为顶点v1,出口为顶点v8,每条弧段旁的数字表示通过该路段所需时间,每次转弯需要附加时间为3,求v1到v8的最短时间路径。 V1 1 V2 3 V3 1 V5 6 V6 V4 2 V7 4 V8

程序: function y=bijiaodaxiao(f1,f2,f3,f4) v12=1;v23=3;v24=2;v35=1;v47=2;v57=2;v56=6;v68=3;v78=4; turn=3; f1=v12+v23+v35+v56+turn+v68; f2=v12+v23+v35+turn+v57+turn+v78; f3=v12+turn+v24+turn+v47+v78; f4=v12+turn+v24+v47+turn+v57+turn+v56+turn+v68; min=f1; if f2

f4 实验结果: v1到v8的最短时间路径为15,路径为1-2-4-7-8. 2、求如图所示中每一结点到其他结点的最短路。V110 V3V59 V6

floy.m中的程序: function[D,R]=floyd(a) n=size(a,1); D=a for i=1:n for j=1:n R(i,j)=j; end end R for k=1:n for i=1:n for j=1:n if D(i,k)+D(k,j)

数学建模实验报告

matlab 试验报告 姓名 学号 班级 问题:.(插值) 在某海域测得一些点(x,y)处的水深z 由下表给出,船的吃水深度为5英尺,在矩形区域(75,200)*(-50,150)里的哪些地方船要避免进入。 问题的分析和假设: 分析:本题利用插值法求出水深小于5英尺的区域,利用题中所给的数据,可以求出通过空间各点的三维曲面。随后,求出水深小于5英尺的范围。 基本假设:1表中的统计数据均真实可靠。 2矩形区域外的海域不对矩形海域造成影响。 符号规定:x ―――表示海域的横向位置 y ―――表示海域的纵向位置 z ―――表示海域的深度 建模: 1.输入插值基点数据。 2.在矩形区域(75,200)×(-50,150)作二维插值,运用三次插值法。 3.作海底曲面图。 4.作出水深小于5的海域范围,即z=5的等高线。 x y z 129 140 103.5 88 185.5 195 105 7.5 141.5 23 147 22.5 137.5 85.5 4 8 6 8 6 8 8 x y z 157.5 107.5 77 81 162 162 117.5 -6.5 -81 3 56.5 -66.5 84 -33.5 9 9 8 8 9 4 9

求解的Matlab程序代码: x=[129 140 103.5 88 185.5 195 105.5 157.5 107.5 77 81 162 162 117.5]; y=[7.5 141.5 23 147 22.5 137.5 85.5 -6.5 -81 3 56.5 -66.5 84 -33.5]; z=[-4 -8 -6 -8 -6 -8 -8 -9 -9 -8 -8 -9 -4 -9]; cx=75:0.5:200; cy=-50:0.5:150; cz=griddata(x,y,z,cx,cy','cubic'); meshz(cx,cy,cz),rotate3d xlabel('X'),ylabel('Y'),zlabel('Z') %pause figure(2),contour(cx,cy,cz,[-5 -5]);grid hold on plot(x,y,'+') xlabel('X'),ylabel('Y') 计算结果与问题分析讨论: 运行结果: Figure1:海底曲面图:

数学建模实验报告(1)

四川师范大学数学与软件科学学院 实验报告 课程名称:数学建模 指导教师:陈东 班级:_2008级2班_____________ 学号:__2008060244___________ 姓名:___邢颖________ 总成绩:______________

数学与软件科学学院 实验报告 学期:_2009__ 年至2010 _年____ 第_ 二___ 学期 2010 年 4 月 1 _日 课程名称:_数学建模__ 专业:数学与应用数学____ 2008__ _级_ 2 ___班 实验编号: 1 实验项目_Matlab 入门_ 指导教师 陈东 姓名: 邢颖 ____ 学号: 2008060244 一、实验目的及要求 实验目的: 实验要求: 二、实验内容 (1)用起泡法对10个数由小到大排序. 即将相邻两个数比较,将小的调到前头. (2)有一个 4*5 矩阵,编程求出其最大值及其所处的位置. (3)编程求 (4)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下. 求它在第10次落地时,共经过多少米?第10次反弹有多高? (5)有一函数 ,写一程序,输入自变量的值,输出函数值. 三、实验步骤(该部分不够填写.请填写附页) (2) x=[1 6 2 7 6;4 6 1 3 2;1 2 3 4 7;8 1 4 6 3]; t=x(1,1); for i=1:4 for j=1:5 if x(i,j)>t t=x(i,j); a=[i,j]; end ∑=20 1! n n y xy x y x f 2sin ),(2 ++=

end end (3)程序1: x(1)=1; s=1; for n=2:20 x(n)=x(n-1)*n; s=s+x(n); end s 程序2; s=0,m=1; for n=2:20; m=m*n; s=s+m; end s 结果:s = 2.5613e+018 (4)程序 s=100 h=s/2 for n=2:10 s=s+2*h h=h/2 end s,h 结果:s = 299.6094 h = 0.0977 (5)程序: function f=fun1(x,y) f=x^2+sin(x*y)+2*y

数学建模迭代实验报告(新)

非 线 性 迭 代 实 验 报 告 一、实验背景与实验目的 迭代是数学研究中的一个非常重要的工具,通过函数或向量函数由初始结点生成迭代结点列,也可通过函数或向量函数由初值(向量)生成迭代数列或向量列。 蛛网图也是一个有用的数学工具,可以帮助理解通过一元函数由初值生成的迭代数列的敛散性,也帮助理解平衡点(两平面曲线交点)的稳定性。 本实验在Mathematica 平台上首先利用蛛网图和迭代数列研究不动点的类型;其次通过蛛网图和迭代数列研究Logistic 映射,探索周期点的性质、认识混沌现象;第三通过迭代数列或向量列求解方程(组)而寻求有效的求解方法;最后,利用结点迭代探索分形的性质。 二、实验材料 2.1迭代序列与不动点 给定实数域上光滑的实值函数)(x f 以及初值0x ,定义数列 )(1n n x f x =+, ,2,1,0=n (2.2.1) }{n x 称为)(x f 的一个迭代序列。 函数的迭代是数学研究中的一个非常重要的思想工具,利用迭代序列可以研究函数)(x f 的不动点。 对函数的迭代过程,我们可以用几何图象来直观地显示它——“蜘蛛网”。运行下列Mathematica 程序: Clear[f] f[x_] := (25*x - 85)/(x + 3); (实验时需改变函数) Solve[f[x]==x , x] (求出函数的不动点) g1=Plot[f[x], {x, -10, 20}, PlotStyle -> RGBColor[1, 0, 0], DisplayFunction -> Identity]; g2=Plot[x, {x, -10, 10}, PlotStyle -> RGBColor[0, 1, 0], DisplayFunction -> Identity]; x0=5.5; r = {}; r0=Graphics[{RGBColor[0, 0, 1], Line[{{x0, 0}, {x0, x0}}]}]; For[i = 1, i <= 100, i++, r=Append[r, Graphics[{RGBColor[0, 0, 1], Line[{{x0, x0}, {x0, f[x0]}, {f[x0], f[x0]}}] }]]; x0=f[x0] ]; Show[g1, g2, r, r0, PlotRange -> {-1, 20}, (PlotRange 控制图形上下范围) DisplayFunction -> $DisplayFunction] x[0]=x0; x[i_]:=f[x[i-1]]; (定义序列) t=Table[x[i],{i,1,10}]//N ListPlot[t] (散点图) 观察蜘蛛网通过改变初值,你能得出什么结论? 如果只需迭代n 次产生相应的序列,用下列Mathematica 程序: Iterate[f_,x0_,n_Integer]:= Module[{ t={},temp= x0},AppendTo[t,temp]; For[i=1,i <= n, i++,temp= f[temp]; AppendTo[t,temp]]; t ] f[x_]:= (x+ 2/x)/2; Iterate[f,0.7,10]

中南大学 计算机体系结构实验报告

计算机体系结构课程设计 学院:信息科学与工程学院 专业班级: 指导老师: 学号: 姓名:

目录 实验1 对指令操作码进行霍夫曼编码 (3) 一、实验目的 (3) 二、实验内容 (3) 三、设计思路 (4) 四、关键代码 (4) 五、实验截图 (5) 六、源代码 (5) 实验2 使用LRU 方法更新Cache (8) 一、实验目的 (8) 二、实验内容 (8) 三、设计思路 (9) 四、程序截图 (9) 五、实验代码 (9) 实验总结 (16) 参考文献 (16)

实验1 对指令操作码进行霍夫曼编码一、实验目的 了解和掌握指令编码的基本要求和基本原理 二、实验内容 1. 使用编程工具编写一个程序,对一组指令进行霍夫曼编码,并输出最后的编码结果以及对指令码的长度进行评价。与扩展操作码和等长编码进行比较。 2. 问题描述以及问题分析 举例说明此问题,例如: 下表所示: 对此组指令进行 HUFFMAN 编码正如下图所示: 最后得到的HUFFMAN 编码如下表所示:

最短编码长度为: H=0.45*1+0.30*2+0.15*3+0.05*4+0.03*5+0.01*6+0.01*6=-1.95. 要对指令的操作码进行 HUFFMAN 编码,只要根据指令的各类操作码的出现概率构造HUFFMAN 树再进行 HUFFAM 编码。此过程的难点构造 HUFFMAN 树,进行 HUFFAM 编 码只要对你所生成的 HUFFMAN 树进行中序遍历即可完成编码工作。 三、设计思路 观察上图,不难看出构造 HUFFMAN 树所要做的工作:1、先对各指令操作码的出现概率进行排序,构造一个有序链表。2、再取出两个最小的概率节点相加,生成一个生的节点加入到链表中,同时从两表中删除此两个节点。3、在对链表进行排序,链表是否只有一个节点,是则 HUFFAN 树构造完毕,否则继续做 2 的操作。为此设计一个工作链表(链表的元素时类,此类的功能相当结构。)、HUFFMAN 树节点、HUFFMAN 编码表节点。 四、关键代码 哈夫曼树重点在于如何排列权值大小不同的结点的顺序 private int leafNum; //叶子结点个数 private HaffmanNode[] hnodes; //哈夫曼树的结点数组 public HaffManCode(double[] weight) //构造指定权值集合的哈夫曼树 { int n = weight.length; //n个叶子结点 this.leafNum = n; this.hnodes = new HaffmanNode[2*n-1]; //n个叶子结点的哈夫曼树共有2n-1个结点 for(int i=0; i

数模实验报告

数学建模与实验实验报告 姓名:李明波 院系:仪器科学与工程学院 学号:22013108 老师:王峰

数学建模与实验实验报告 实验一 实验题目 (1)已知某平原地区的一条公路经过如下坐标所示的点,请采用样条插值绘出这条公路(不考虑 (2)对于上表给出的数据,估计公路长度。 实验过程 (1)第一问代码如下: X=[0,30,50,70,80,90,120,148,170,180,202,212,230,248,268,271,280,290,300,312,320,340,3 60,372,382,390,416,430,478]; Y=[80,64,47,42,48,66,80,120,121,138,160,182,200,208,212,210,200,196,188,186,200,184,1 88,200,202,240,246,280,296]; %给出坐标点 xx=0:1:478;%选取0~478内的点 yy=spline(X,Y,xx);%样条插值法找出曲线 plot(X,Y, 'p ',xx,yy, 'g ');%绘出曲线图 x=[440,420,380,360,340,320,314,280,240,200]; y=[308,334,328,334,346,356,360,392,390,400]; hold on xy=440:-1:200; yx=spline(x,y,xy); plot(x,y, 'p ',xy,yx, 'g '); 运行上述代码得到结果如下:

上图为所绘公路图 (2)代码如下: X=[0 30 50 70 80 90 120 148 170 180 202 212 230 248 268 271 280 290 300 312 320 340 360 372 382 390 416 430 478 440 420 380 360 340 320 314 280 240 200]; Y=[80 64 47 42 48 66 80 120 121 138 160 182 200 208 212 210 200 196 188 186 200 184 188 200 202 240 246 280 296 308 334 328 334 346 356 360 392 390 400]; for k=1:length(X)-1 len(k)=sqrt((X(k+1)-X(k))^2+(Y(k+1)-Y(k))^2); end; Len=sum(len);Len 运行得到结果如下: 即公路长为967.46米。

数模模数转换实验报告材料

数模模数转换实验报告 一、实验目的 1、了解数模和模数转换电路的接口方法及相应程序设计方法。 2、了解数模和模数转换电路芯片的性能和工作时序。 二、实验条件 1、DOS操作系统平台 2、数模转换芯片DAC0832和模数转换器ADC0809芯片。 三、实验原理 1、数模转换: (1)微机处理的数据都是数字信号,而实际的执行电路很多都是模拟的。因此微机的处理结果又常常需要转换为模拟信号去驱动相应的执行单元,实现对被控对象的控制。这种把数字量转换为模拟量的设备称为数模转换器(DAC),简称D/A。 (2)实验中所用的数模转换芯片是DAC0832,它是由输入寄存器、DAC 寄存器和D/A 转换器组成的CMOS 器件。其特点是片包含两个独立的8 位寄存器,因而具有二次缓冲功能,可以将被转换的数据预先存在DAC 寄存器中,同时又采集下一组数据,这就可以根据需要快速修改DAC0832 的输出。 2、模数转换: (1)在工程实时控制中,经常要把检测到的连续变化的模拟信号,如温度、压力、速度等转换为离散的数字量,才能输入计算机进行处理。实现模拟量到数字量转换的设备就是模数转换器(ADC),简称A/D。

(2)模数转换芯片的工作过程大体分为三个阶段:首先要启动模数转换过程。其次,由于转换过程需要时间,不能立即得到结果,所以需要等待一段时间。一般模数转换芯片会有一条专门的信号线表示转换是否结束。微机可以将这条信号线作为中断请求信号,用中断的方式得到转换结束的消息,也可以对这条信号线进行查询,还可以采用固定延时进行等待(因为这类芯片转换时间是固定的,事先可以知道)。最后,当判断转换已经结束的时候,微机就可以从模数转换芯片中读出转换结果。 (3)实验采用的是8 路8 位模数转换器ADC0809 芯片。ADC0809 采用逐次比较的方式进行A/D 转换,其主要原理为:将一待转换的模拟信号与一个推测信号进行比较,根据推测信号是大于还是小于输入信号来决定增大还是减少该推测信号,以便向模拟输入逼近。推测信号由D/A 转换器的输出获得,当推测信号与模拟信号相等时,向D/A 转换器输入的数字就是对应模拟信号的数字量。ADC0809 的转换时间为64 个时钟周期(时钟频率500K 时为128S)。分辨率为 8 位,转换精度为±LSB/2,单电源+5V 供电时输入模拟电压围为04.98V。 四、实验容 1、把DAC0832 的片选接偏移为10H 的地址,使用debug 命令来测试 DAC0832 的输出,通过设置不同的输出值,使用万用表测量Ua 和Ub 的模拟电压,检验DAC0832 的功能。选取典型(最低、最高和半量程等)的二进制值进行检验,记录测得的结果。实验结果记录如下: 输入 00 0.001 4.959 08 0.145 4.636

数学建模-实验报告11

《数学建模实验》实验报告 学号:______ 姓名: 实验十一:微分方程建模2 一只小船渡过宽为d的河流,目标是起点A 正对着的另一岸B点,已知河水流速w 与船在静水中的速度V2之比为k. 1?建立小船航线的方程,求其解析解; 2. 设d=100m,v i=1m/s,v2=2m/s,用数值解法求渡河所需时间、任意时刻小船的位置及航行曲线,作图,并与解析解比较。 一、问题重述 我们建立数学模型的任务有: 1. 由已给定的船速、水速以及河宽求出渡河的轨迹方程; 2. 已知船速、水速、河宽,求在任意时刻船的位置以及渡船所需要的时间。 二、问题分析 此题是一道小船渡河物理应用题,为典型的常微分方程模型,问题中船速、水速、河宽已经给定,由速度、时间、位移的关系,我们容易得到小船的轨迹方程,同时小船的起点和终点已经确定,给我们的常微分方程模型提供了初始条件。 三、模型假设 1?假设小船与河水的速度恒为定值v「V2 ,不考虑人为因素及各种自然原因; 2. 小船行驶的路线为连续曲线,起点为A,终点为B ; 3. 船在行驶过程中始终向着B点前进,即船速v2始终指向B ; 4. 该段河流为理想直段,水速w与河岸始终保持平行。 四、模型建立 y | B A 兀、 % \ * r v A X 如图,以A为原点,以沿河岸向右方向为x轴正向,以垂直河岸到B端方向为y轴正向建立平面直角坐标系。其中河水流速为v i,小船速度为V2,且w:v2 k,合速度为v,河宽为d,为72与直线AB的夹角。

V x V y 在t 时刻, 船 dx dt V i 小船在x 轴方向的位移为 x v 2 sin v 2 cos V i V 2 0,x(0) 0, y(0) ;(d y) 0. \ (d y) d y ______ 2 2 ' x dy v 2 cos 由(2)/(1)得到dx y(0) v-1 v 2 sin 0. dx In (2) (i )题 dx 对上式求倒数得 dx dy x ,在y 轴方向上的位移为y ,则t 时刻, 方向 的速度 模型求解 v 2 sin V 1 v 2 co s —, 则上式可化为 dx d y dy d ?dp pdy ydp ,代入上式, k J p 2 整理,得 P 2 | ln| d Cy | 也就是 x 2 (d y )2 y P (d y ) dp P 2 kdy ,积分可得 y C k ( ------- )k ,代入 d y x d y d y 2 0, y 0 d k (d y )k (d y )k d k (见附 录) ,对该情况下的微分方程的数值解进行分 60.0000 6.5451 98.2803 60.1000 6.4519 98.3319 60.2000 6.3585 98.3827 60.3000 6.2649 98.4327 60.4000 6.1711 98.4819 60.5000 6.0771 98.5304 60.6000 5.9829 98.5782 60.7000 5.8886 98.6251 60.8000 5.7940 98.6713 60.9000 5.6993 98.7168 61.0000 5.6043 98.7615 61.1000 5.5092 98.8054 题 由初始条件,设计程序 析,结果如下(省略了前60s 的数据):

最新中南大学数据结构实验报告

中南大学 数据结构实验报告 实验题目:(1)单链表的实现(2)栈和队列 (3)二叉树的遍历(4)查找与排序学生姓名:代巍 学生学号:0909121615 指导老师:余腊生 所在学院:信息科学与工程学院 专业班级:信息安全1201班 指导教师评定:签名:

实验一单链表的实现 一、实验目的 了解线性表的逻辑结构和各种存储表示方法,以及定义在逻辑结构上的各种 基本运算及其在某种存储结构上如何实现这些基本运算。在熟悉上述内容的基础上,能够针对具体应用问题的要求和性质,选择合适的存储结构设计出相应的有效算法,解决与线性表相关的实际问题 二、实验内容 用C/C++语言编写程序,完成以下功能: (1)运行时输入数据,创建一个单链表 (2)可在单链表的任意位置插入新结点 (3)可删除单链表的任意一个结点 (4)在单链表中查找结点 (5)输出单链表 三、程序设计的基本思想,原理和算法描述: (包括程序的结构,数据结构,输入/输出设计,符号名说明等) 用一组地址任意的存储单元存放线性表中的数据元素。以元素(数据元素的映象) + 指针(指示后继元素存储位置) = 结点(表示数据元 素或数据元素的映象) 以“结点的序列”表示线性表称作线性链表(单链表) 单链表是指数据接点是单向排列的。一个单链表结点,其结构类型分为两部分: (1)、数据域:用来存储本身数据。 (2)、链域或称为指针域:用来存储下一个结点地址或者说指向其直接后继的指针。 1、单链表的查找 对单链表进行查找的思路为:对单链表的结点依次扫描,检测其数据域是否是我们所要查好的值,若是返回该结点的指针,否则返回NULL。

相关文档
最新文档