matlab实训报告.docx
- 文档编号:4871173
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:43
- 大小:1.82MB
matlab实训报告.docx
《matlab实训报告.docx》由会员分享,可在线阅读,更多相关《matlab实训报告.docx(43页珍藏版)》请在冰豆网上搜索。
matlab实训报告
数学软件应用实训
实训报告
学生姓名
韩建
学号
1309064046
班级
信计1302班
成绩
指导教师
数学与计算机科学学院
2015年12月15日
实训报告评阅
评语:
成绩
指导教师签名:
年月日
1特殊函数与图形
问题背景与实验目的
著名的Riemann函数大家都很熟悉了,但是关于它的图像你是否清楚呢?
除了最上面那几点,其他都很难画吧?
你想不想看看下面那些“挤在一起”的点是怎样分布的呢?
还有几何中的马鞍面、单叶双曲面等是怎样由直线生成的,是不是也想目睹一下呢?
这些,都离不开绘图.
实际上绘图一直是数学中的一种重要手段,借助图形,往往可以化繁为简,使抽象的对象得到明白直观的体现.比如函数的基本性质,一个图形常可以使之一目了然,非常有效.它虽不能代替严格的分析与证明,但在问题的研究过程中,可以帮助研究人员节约相当一部分精力.此外,它还可以使计算、证明、建模等的结果得到更明白易懂的表现,有时,这比科学论证更有说服力.
同时,数学的教学与学习过程也离不开绘图.借助直观的图形,常可以使初学者更容易接受新知识.如数学分析中有不少函数,其解析式着实让人望而生畏,即使对其性质作了详尽的分析,还是感到难明就里;但如果能看到它的图形,再配合理论分析,则问题可以迎刃而解.又如在几何的学习中,会遇到大量的曲线与曲面,也离不开图形的配合.
传统的手工作图,往往费力耗时,效果也不尽理想.计算机恰恰弥补了这个不足,使你可以方便地指定各种视角、比例、明暗,从各个角度进行观察.
本实验通过对函数的图形表示和几个曲面(线)图形的介绍,一方面展示它们的特点,另一方面,也将就Matlab软件的作图功能作一个简单介绍.大家将会看到,Matlab的作图功能非常强大.
实验内容
数学分析中,特别是积分部分,我们接触了不少有趣的函数,由于其中有的不是一一对应的,用上面的方法无法画出它们的图像,这时就只能用参数了.
此外还有些图形只能用参数来画,比如空间曲线,在计算机上不接受“两个曲面的交线”这种表示,所以也只能用参数来实现.
用参数方式作图的关键在于找出合适的参数表示,尤其是不能有奇点,最好也不要用到开方.所以要找的参数最好是有几何意义的.当然这也不可一概而论,需要多积累经验.
实验步骤
1.做出下图所示的三维图形:
图9
ezsurf('3*sin(u)*cos(v)','3*sin(u)*sin(v)','3*cos(u)',[0,pi,0,2*pi]);
axisequal
holdon
ezsurf('(8+2*cos(u))*cos(v)','(8+2*cos(u))*sin(v)','2*sin(u)',[0,2*pi,0,2*pi])
2作出下图所示的墨西哥帽子及其剪裁图形:
[a,b]=meshgrid(-5:
.5:
5);
c=sqrt(a.^2+b.^2)+eps;
z=sin(c)./c;
mesh(a,b,z)
axissquare
改变a、b的取值范围,可得到裁剪后的图。
1.画出球面、椭球面、双叶双曲面、单叶双曲面.
球面:
ezsurf('3*sin(u)*cos(v)','3*sin(u)*sin(v)','3*cos(u)',[0,pi,0,2*pi]);
axisequal
title(‘球面’)
椭球面:
ezsurf('3*sin(u)*cos(v)','1*sin(u)*sin(v)','1*cos(u)',[0,pi,0,2*pi]);
axisequal
title(‘椭球面’)
双叶双曲面:
ezsurf('3*tem(u)*cos(v)','3*tem(u)*sin(v)','5.*sec(u)',[-2*pi,3*pi/2,0,2*pi]);
axisauto
axisequal
title(‘双叶双曲面’)
单叶双曲面:
ezsurf('3*sec(u)*cos(v)','4*sec(u)*sin(v)','5*tem(u)',[-pi/2,pi/2,0,2*pi]);
axisauto
axisequal
htle(‘单叶双曲面’)
4.若要求田螺线的一条轴截面的曲边是一条抛物线:
时
.试重新设计田螺线的参数方程,并画出该田螺线.
Ezplot3(‘1*1*sin
(1)’,’1*1*cos
(1)’,’1*2/5’,[0,50])
5.作出下图所示的马鞍面(颜色为灰色,并有一个标题:
“马鞍面”):
图11
[x,y]=meshgrid(-25:
1:
25);
z=x.^2/9-y.^2/4;
mesh(x,y,z)
title('马鞍面')
colormap(‘gray’)
gridoff
6.绘制图8所示的黎曼函数图形,要求分母的最大值
的数值由键盘输入(提示:
使用input语句).
程序如下:
n=100;x=[];y=[];k=1;
fori=2:
n
forj=1:
i-1
ifgcd(i,j)==1%用函数gcd(m,n)可求m和n的最大公约数
x(k)=j/i;
y(k)=1/i;
k=k+1;
end
end
end
plot(x,y,'.b');
axis([0,1,0,1])
2数字填图问题
问题背景和实验目的
数字填图问题是数学问题的一种趣味形式.早在19世纪后半期,一些数学家就在报刊中大量使用数字填图游戏和字谜游戏等,目的是使业余爱好者也能通过简单的形式去认识、理解和琢磨深奥的数学问题,这些问题中甚至包括困惑了世间智者350多年、于1994年才刚刚被证明了的“费马大定理”.100多年来,数字填图问题对数学界所起的作用是不言而喻的.
大家都知道,数学问题一般都经过严格的逻辑证明才得以解决.而逻辑证明是指从一些公理出发,经过逻辑推理来证明问题.但随着20世纪40年代以来计算机的诞生和发展,计算机改变了整个世界,计算机已在各个领域发挥作用,并取得了许多重大进展.于是,能否用计算机来证明数学问题便成了大家关心的话题.
所谓计算机证明是指充分发挥计算机计算速度快和会“推理”的特点,用计算机程序模拟解题或进行穷举检验,最后得到问题的解.几乎所有的数学家对计算机证明持保留态度,因为他们相信,只有逻辑证明才是真正可靠的.但“四色问题”的证明,又使他们感到困惑,因为“四色问题”的证明实际上是一个计算机证明.
能否用计算机来证明数学问题的争论可能会持续一个相当长的时间,本实验旨在通过生活中几个常见的数字填图问题的探究,谈谈这类问题的逻辑推理解法和计算机解法.
相关函数(命令)简介
1.cputime命令:
记录执行本命令时的Matlab时钟的时间(秒).
2.tic命令:
开始计时.
3.toc命令:
结束计时.
4.disp(x):
输出矩阵x.x的各项应为字符,所以在输出时要进行转化.
相关的命令有:
num2str():
把数值转化为字符;mat2str():
把矩阵转化为字符.
实验内容
让我们先从一个简单的问题出发来谈谈数字填图问题的两种解法.然后通过几个稍复杂问题的探究,从中展示逻辑推理的严谨以及计算机解法的魅力,启迪我们去解决更复杂的数学问题.
1.一道竞赛题(以下称“原问题”)
1998年4月香港数理教育学会主办的初中数学竞赛有这样一道试题:
在下面的加法算式中,每个□表示一个数字,任意两个数字都不相同,那么A与B的乘积的最大值是多少?
程序如下:
n=0;
fora=1:
9
forb=1:
9
if(b==a),continue;end
forc=0:
9
if(c==a|c==b),continue;end
ford=1:
9
if(d==a|d==b|d==c),continue;end
fore=0:
9
if(e==a|e==b|e==c|e==d),continue;end
forf=0:
9
if(f==a|f==b|f==c|f==d|f==e),continue;end
forg=1:
9
if(g==a|g==b|g==c|g==d|g==e|g==f),continue;end
forh=0:
9
if(h==a|h==b|h==c|h==d|h==e|h==f|h==g),continue;end
fori=0:
9
if(i==a|i==b|i==c|i==d|i==e|i==f|i==g|i==h),continue;end
forj=0:
9
if(j==a|j==b|j==c|j==d|j==e|j==f|j==g|j==h|j==i),
continue;
end
if(a+b*10+c+d*100+e*10+f==g*1000+h*100+i*10+j)
n=n+1;
k=i*j
fprintf('第%d个解:
%d+%d%d+%d%d%d=%d%d%d%d\n',n,a,b,c,d,e,f,g,h,i,j,k);
end,end,end,end,end,end,end,end,end,end,end
结果如下:
第1个解:
2+46+987=1035.第15个解:
k=15
第2个解:
2+47+986=1035.第15个解:
k=15
……
第8个解:
2+87+964=1053.第12个解:
k=12
第9个解:
3+45+978=1026.第12个解:
k=12
…….
第59个解:
8+73+945=1026.第12个解:
k=12
第60个解:
8+75+943=1026.第12个解:
k=12(共60个解,这里只选取一部分)
故A*B的最大值为15
由上述问题引伸出的三个问题:
2.满足原问题题意的不同的加法算式(竖式)共有多少个?
程序如下:
t02=clock;
n=0;
A1=1:
9;
fori1=1:
9
a=A1(i1);A2=A1([1:
i1-1,i1+1:
9]);
fori2=1:
8
b=A2(i2);A3=A2([1:
i2-1,i2+1:
8]);
fori3=1:
7
c=A3(i3);A4=A3([1:
i3-1,i3+1:
7]);
fori4=1:
6
d=A4(i4);A5=A4([1:
i4-1,i4+1:
6]);
fori5=1:
5
e=A5(i5);A6=A5([1:
i5-1,i5+1:
5]);
fori6=1:
4
f=A6(i6);A7=A6([1:
i6-1,i6+1:
4]);
fori7=1:
3
g=A7(i7);A8=A7([1:
i7-1,i7+1:
3]);
fori8=1:
2
h=A8(i8);i=A8([1:
i8-1,i8+1:
2]);
ifa+b==c&d+e==f&g+h==i*10&a
n=n+1;
disp(['第',num2str(n),'个解:
',...
num2str(a),'+',num2str(b),'=',num2str(c),'',...
num2str(d),'+',num2str(e),'=',num2str(f),'',...
num2str(g),'+',num2str(h),'=',num2str(i),'0'])
end
end
end
end
end
end
end
end
end
t2=etime(clock,t02);
fprintf('\nTheelapsedtime(measuredbyclock/etime)is:
%g',t2)
程序结果:
第1个解:
2+6=84+5=93+7=10
第2个解:
2+7=93+5=84+6=10
Theelapsedtime(measuredbyclock/etime)is:
11.754
3.如果在原问题中删除条件:
“任意两个数字都不相同”,则满足题意的不同的加法算式(竖式)共有多少个?
程序如下:
#include
main()
{inta,b,c,d,e,f,g,h,i,j,n=0;
printf("\n\n");
for(a=1;a<=9;a++)
{
for(b=1;b<=9;b++)
{
if(b==a)continue;
for(c=1;c<=9;c++)
{
if(c==a||c==b)continue;
for(d=1;d<=9;d++)
{
if(d==a||d==b||d==c)continue;
for(e=1;e<=9;e++)
{
if(e==a||e==b||e==c||e==d)continue;
for(f=1;f<=9;f++)
{
if(f==a||f==b||f==c||f==d||f==e)continue;
for(g=1;g<=9;g++)
{
if(g==a||g==b||g==c||g==d||g==e||g==f)continue;
for(h=1;h<=9;h++){
if(h==a||h==b||h==c||h==d||h==e||h==f||h==g)continue;
for(i=1;i<=9;i++){
if(i==a||i==b||i==c||i==d||i==e||i==f||i==g||i==h)continue;
else
if((a+b==c)&&(d+e==f)&&(g+h==10*i)&&(a
{printf("%3d:
%d+%d=%d,%d+%d=%d,%d+%d=%d0\n",++n,a,b,c,d,e,f,g,h,i);
if(n%3==0)printf("\n");
}}}}}}}}}}
return0;
}
程序结果:
1:
2+6=8,4+5=9,3+7=10
2:
2+7=9,3+5=8,4+6=10
Pressanykeytocontinue
4.假如违反常规,允许三个“加数”与“和数”均可以由数字0作为开头,保留条件:
“任意两个数字都不相同”,则满足原问题题意的不同的加法算式(竖式)共有多少个?
程序如下:
t0=clock;
n=0;
S1=1:
9;
fori1=1:
9
A=S1(i1);S2=S1([1:
i1-1,i1+1:
9]);
fori2=1:
8
B=S2(i2);S3=S2([1:
i2-1,i2+1:
8]);
fori3=1:
7
C=S3(i3);S4=S3([1:
i3-1,i3+1:
7]);
fori4=1:
6
D=S4(i4);S5=S4([1:
i4-1,i4+1:
6]);
fori5=1:
5
E=S5(i5);S6=S5([1:
i5-1,i5+1:
5]);
fori6=1:
4
F=S6(i6);S7=S6([1:
i6-1,i6+1:
4]);
fori7=1:
3
G=S7(i7);S8=S7([1:
i7-1,i7+1:
3]);
fori8=1:
2
H=S8(i8);I=S8([1:
i8-1,i8+1:
2]);
if(A/(10*B+C)+D/(10*E+F)==G/(10*H+I)&A n=n+1; fprintf('第%d个解: %d/%d%d+%d/%d%d=%d/%d%d\n',n,A,B,C,D,E,F,G,H,I); end;end;end;end;end;end;end;end;end; t=etime(clock,t0); fprintf('计算用时: %g\n共有%d个解',t,n) 程序结果: 第1个解: 1/26+5/78=4/39 第2个解: 1/32+7/96=5/48 第3个解: 1/96+7/48=5/32 第4个解: 2/68+9/34=5/17 第5个解: 4/56+7/98=3/21 第6个解: 5/26+9/78=4/13 计算用时: 13.984 共有6个解 5.验证本实验中的“问题四”、“问题五”的结论.能否给出相应的推理解法? 程序如下: t0=clock; n=0; S1=1: 9; fori1=1: 9 A=S1(i1);S2=S1([1: i1-1,i1+1: 9]); fori2=1: 8 B=S2(i2);S3=S2([1: i2-1,i2+1: 8]); fori3=1: 7 C=S3(i3);S4=S3([1: i3-1,i3+1: 7]); fori4=1: 6 D=S4(i4);S5=S4([1: i4-1,i4+1: 6]); fori5=1: 5 E=S5(i5);S6=S5([1: i5-1,i5+1: 5]); fori6=1: 4 F=S6(i6);S7=S6([1: i6-1,i6+1: 4]); fori7=1: 3 G=S7(i7);S8=S7([1: i7-1,i7+1: 3]); fori8=1: 2 H=S8(i8);I=S8([1: i8-1,i8+1: 2]); if((10*A+B)/C+(10*D+E)/F==(10*G+H)/I&C n=n+1; fprintf('第%d个解: %d%d/%d+%d%d/%d=%d%d/%d\n',n,A,B,C,D,E,F,G,H,I); end;end;end;end;end;end;end;end;end; t=etime(clock,t0); fprintf('计算用时: %g\n共有%d个解',t,n) 运行结果: 第1个解: 13/2+45/6=98/7 第2个解: 14/2+35/7=96/8 第3个解: 14/2+96/8=57/3 第4个解: 15/3+27/9=48/6 第5个解: 15/3+27/9=64/8 第6个解: 17/2+58/4=69/3 第7个解: 18/3+27/9=54/6 第8个解: 18/3+54/9=72/6 第9个解: 18/3+72/9=56/4 第10个解: 18/4+23/6=75/9 第11个解: 18/6+54/9=27/3 第12个解: 21/3+54/9=78/6 第13个解: 21/7+96/8=45/3 第14个解: 24/6+35/7=81/9 第15个解: 28/7+15/9=34/6 第16个解: 35/7+18/9=42/6 第17个解: 37/1+45/6=89/2 第18个解: 37/1+54/9=86/2 第19个解: 41/3+89/6=57/2 第20个解: 45/3+96/8=27/1 第21个解: 46/2+18/9=75/3 第22个解: 46/3+87/9=25/1 第23个解: 54/6+32/8=91/7 第24个解: 54/6+98/7=23/1 第25个解: 56/7+81/9=34/2 第26个解: 58/2+49/7=36/1 第27个解: 65/3+48/9=27/1 第28个解: 67/3+15/9=48/2 第29个解: 73/6+21/9=58/4 第30个解: 74/3+95/6=81/2 第31个解: 75/6+81/9=43/2 第32个解: 76/8+54/9=31/2 第33个解: 81/6+45/9=37/2 第34个解: 84/6+27/9=51/3 第35个解: 92/4+16/8=75/3 第36个解: 97/2+58/4=63/1 第37个解: 97/3+58/6=42/1 第38个解: 98/2+54/3=67/1 计算用时: 13.108 共有38个解 6.设A~J表示十个互不相同的数字,问: 方程(注意: 组成分数的四个数的第一位数字不能为0) 共有多少个解? 程序如下: tic; n=0; fora=1: 9 forb=1: 9 if(b==a),continue;end forc=1: 9 if(c==a|c==b),continue;end ford=1: 9 if(d==a|d==b|d==c),continue;end fore=1: 9 if(e==a|e==b|e==c|e==d),continue;end forf=1: 9 if(f==a|f==b|f==c|f==d|f==e),continue;end forg=1: 9 if(g==a|g==b|g==c|g==d|g==e|g==f),continue;end forh=1: 9 if(h==a|h==b|h==c|h==d|h==e|h==f|h==g),continue;end fori=1: 9 if(i==a|i==b|i==c|i==d|i==e|i==f|i==g|i==h) continue; end ifi~=a&i~=b&i~=c&i~=d&i~=e&i~=f&i~=g&i~=h&a/(10*b+c)+d/(10*e+f)==g/(10*h+i)&a n=n+1; disp(['第',num2str(n),'个解: ',num2str(a),'/',num2str(b),num2str(c),'+',num2str(d),'/',num2str(e),num2str(f),'=',num2str(g),'/',num2str(h),num2str(i)]) end end end end end end end end end end t3=toc; fprintf('\nTheelapsedtime(measuredbytic/toc)is: %g',t3) 运行结果: 第1个解: 1/26+5/78=4/39 第2个解: 1/32+7/96=5/48 第3个解: 1/96+7/48=5/32 第4个解: 2/68+9/34=5/17 第5个解: 4/56+7/98=3/21 第6个解: 5/26+9/78=4/13 Theelapsedtime(measuredbytic/toc)is: 86.9631 3数据的统计分析基础 实验目的 在日常生活中我们会在很多事件中收集到一些数据(比如: 考试分数、窗口排队人数、月用电量、灯泡寿命、测量误差、产品质量、月降雨量等数据),这些数据的产生一般都是随机的.这些随机数据乍看起来并没有什么
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 报告