中南大学数学建模实验报告Word格式.docx
《中南大学数学建模实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《中南大学数学建模实验报告Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
y=sin(x);
z=cos(x);
plot(x,y,'
r'
x,z,'
g0'
)
先建M文件myfun1.m:
functionY=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:
5;
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
plot3(X,Y,Z)
(4)例:
画函数Z=(X+Y)2的图形.
y=1:
[X,Y]=meshgrid(x,y);
Z=(X+Y).^2;
surf(X,Y,Z)
shadingflat
(5)例:
在区间[0,2π]画sin(x)的图形,并加注图例“自变量X”、“函数Y”、“示意图”,并加格栅.
x=linspace(0,2*pi,30);
y=sin(x);
plot(x,y)
xlabel('
自变量X'
ylabel('
函数Y'
title('
示意图'
gridon
(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'
contour3ofpeaks'
);
subplot(1,2,2)
contour(x,y,z,16,'
),ylabel('
contourofpeaks'
三、实验二:
线性规划
了解线性规划的基本内容.
掌握用数学软件包求解线性规划问题
2.实验内容:
(1)例:
max
解:
编写M文件xxgh1.m如下:
c=[-0.4-0.28-0.32-0.72-0.64-0.6];
A=[0.010.010.010.030.030.03;
0.02000.0500;
00.02000.050;
000.03000.08];
b=[850;
700;
100;
900];
Aeq=[];
beq=[];
vlb=[0;
0;
0];
vub=[];
[x,fval]=linprog(c,A,b,Aeq,beq,vlb,vub)
运算结果如下:
(2)例:
投资的收益和风险
二、基本假设和符号规定
三、模型的建立与分析
1.总体风险用所投资的Si中最大的一个风险来衡量,即max{qixi|i=1,2,…,n}
4.模型简化:
四、模型1的求解
由于a是任意给定的风险度,到底怎样给定没有一个准则,不同的投资者有不同的风险度.我们从a=0开始,以步长△a=0.001进行循环搜索,编制程序如下:
a=0;
while(1.1-a)>
1
c=[-0.05-0.27-0.19-0.185-0.185];
Aeq=[11.011.021.0451.065];
beq=[1];
A=[00.025000;
000.01500;
0000.0550;
00000.026];
b=[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([00.100.5]),holdon
a=a+0.001;
end
xlabel('
a'
Q'
结果:
四、实验三:
插值
了解插值的基本内容.
例:
用分段线性插值法求插值,并观察插值误差.
(1)在[-6,6]中平均选取5个点作插值(xch11)
(2)在[-6,6]中平均选取11个点作插值(xch12)
(3)在[-6,6]中平均选取21个点作插值(xch13)
(4)在[-6,6]中平均选取41个点作插值(xch14)
五、实验四:
拟合
直观了解拟合基本内容.
掌握用数学软件求解拟合问题.
例:
对下面一组数据作二次多项式拟合
输入指令:
x=0:
1;
y=[-0.4471.9783.286.167.087.347.669.569.489.3011.2];
A=polyfit(x,y,2)
z=polyval(A,x);
plot(x,y,'
k+'
x,z,'
六、MATLAB在材料力学里的应用
1、实验目的:
通过构建可视化窗口,实现对平面问题:
材料数据的直观、简便处理,得到需要的结论,具体功能如下:
1.已知应变场,输入窗口后,能够得到应力场;
2.已知应力场,根据材料的物性方程,判断材料是否发生屈服;
3.已知某两点应力场,通过矩阵运算得到应力张量不变量,从而判断这两点是否处于同一应力状态。
数学背景与材料力学解释:
1.上述各类场量都易以矩阵形式表达,并且这些场量相互之间存在以下关系:
Mises屈服准则:
平面应力物理方程:
斜方向应变公式:
主应力公式:
2.通过单向拉伸与扭转实验,可以测得弹性模量(E)、剪切模量(G)、泊松比(u)、应变场量,通过这些实验数据进行运用求解,是具有实际意义的。
求解过程:
在单向拉伸实验样品上按一定角度(Lij)贴应变片(默认0度、45度、90度),得到弹性模量(E)、应变量(
、
)。
通过斜方向应变公式得到应变张量,再由物理方程得到应力张量。
利用求出的应力场由主应力公式求得主应力,再由等效应力公式、Mises屈服准则得到等效应力以及强度校核。
2、实验内容:
(1).功能一:
“开始运算”求应力应变的实现
%---Executesonbuttonpressinpushbutton1.
functionpushbutton1_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton1(seeGCBO)
%eventdatareserved-tobedefinedinafutureversionofMATLAB
%handlesstructurewithhandlesanduserdata(seeGUIDATA)
e1=str2num(get(handles.edit10,'
String'
))
e2=str2num(get(handles.edit11,'
e3=str2num(get(handles.edit12,'
u=str2num(get(handles.edit20,'
E=str2num(get(handles.edit1,'
res=2*e3-e1-e2
set(handles.edit16,'
res)
set(handles.edit14,'
e1)
set(handles.edit15,'
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,'
x)
set(handles.edit18,'
y)
set(handles.edit19,'
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,'
x1)
set(handles.edit26,'
y1)
set(handles.edit27,'
z1)
eq=sqrt(((x1-y1).^2+(y1-z1).^2+(z1-x1).^2)/2)
set(handles.edit29,'
eq)
(2).功能二:
“强度校核”功能的实现
%---Executesonbuttonpressinpushbutton3.
functionpushbutton3_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton3(seeGCBO)
s=str2num(get(handles.edit31,'
e=str2num(get(handles.edit29,'
ife<
s
set(handles.edit30,'
'
材料未发生屈服'
else
材料发生屈服'
end
功能三:
“ClearALL”的实现
%---Executesonbuttonpressinpushbutton2.
functionpushbutton2_Callback(hObject,eventdata,handles)
%hObjecthandletopushbutton2(seeGCBO)
set(handles.edit10,'
'
set(handles.edit11,'
set(handles.edit12,'
set(handles.edit20,'
set(handles.edit1,'
set(handles.edit30,'
set(handles.edit31,'
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'
[1010400400],...%位置
Color'
[187173160]/255,...%背景颜色
XLim'
[04],...%X轴范围
YLim'
[04],...%Y轴范围
XTick'
[],...%X轴刻度为空
YTick'
[],...%Y轴刻度为空
XColor'
[187173160]/255,...%X轴颜色
YColor'
[187173160]/255,...%Y轴颜色
Box'
on'
...%显示边框
XTickLabel'
[],...%X轴刻度标签为空
YTickLabel'
[],...%Y轴刻度标签为空
PlotBoxAspectRatio'
[111]);
handles.hScore=uicontrol(...
[1041520050],...%位置
Style'
Text'
...%类型为text
FontUnits'
...%字体单位像素
FontSize'
14,...%字体大小14号
HorizontalAlignment'
left'
...%对齐方式左对齐
BackgroundColor'
get(handles.hFig,'
),...%背景颜色
sprintf('
Score:
0\nBest:
%d'
handles.Best));
%显示文本
handles.hMoves=uicontrol(...
...%单位为像素
[30041512050],...%位置
Moves:
handles.game.NumMoves));
(2).创建16个空白小块
handles.blocks=gameBlock(handles.xPts(:
),handles.yPts(:
),...
repmat({'
},16,1),.9,.9,handles.hAx);
handles=updateblocks(handles);
%更新小块
ifexist('
2048.png'
file'
)%若2048.png存在,设置图标
warningoffall%屏蔽所有警告
newIcon=javax.swing.ImageIcon('
%读取2048.png
figFrame=get(handles.hFig,'
JavaFrame'
%获得界面的JavaFrame
figFrame.setFigureIcon(newIcon);
%更改图标
set(handles.hFig,'
Visible'
%显示游戏主界面
(3).颜色设置
functioncset(varargin)
globalhandles;
c=uisetcolor;
%打开颜色设置对话框
ifc~=0%若用户选择了颜色
set(handles.hFig,'
c);
%设置主界面背景
set(handles.hMoves,'
%设置文本框hMoves的背景
set(handles.hScore,'
%设置文本框hScore的背景
%默认颜色
functionmcset(varargin)
[0.8,0.8,0.8]);
set(handles.hMoves,'