matlab实训报告Word文档下载推荐.docx
《matlab实训报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《matlab实训报告Word文档下载推荐.docx(43页珍藏版)》请在冰豆网上搜索。
[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.画出球面、椭球面、双叶双曲面、单叶双曲面.
球面:
title(‘球面’)
椭球面:
1*sin(u)*sin(v)'
1*cos(u)'
title(‘椭球面’)
双叶双曲面:
3*tem(u)*cos(v)'
3*tem(u)*sin(v)'
5.*sec(u)'
[-2*pi,3*pi/2,0,2*pi]);
axisauto
title(‘双叶双曲面’)
单叶双曲面:
3*sec(u)*cos(v)'
4*sec(u)*sin(v)'
5*tem(u)'
[-pi/2,pi/2,0,2*pi]);
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
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:
if(b==a),continue;
forc=0:
if(c==a|c==b),continue;
ford=1:
if(d==a|d==b|d==c),continue;
fore=0:
if(e==a|e==b|e==c|e==d),continue;
forf=0:
if(f==a|f==b|f==c|f==d|f==e),continue;
forg=1:
if(g==a|g==b|g==c|g==d|g==e|g==f),continue;
forh=0:
if(h==a|h==b|h==c|h==d|h==e|h==f|h==g),continue;
fori=0:
if(i==a|i==b|i==c|i==d|i==e|i==f|i==g|i==h),continue;
forj=0:
if(j==a|j==b|j==c|j==d|j==e|j==f|j==g|j==h|j==i),
continue;
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个解:
……
第8个解:
2+87+964=1053.第12个解:
k=12
第9个解:
3+45+978=1026.第12个解:
…….
第59个解:
8+73+945=1026.第12个解:
第60个解:
8+75+943=1026.第12个解:
k=12(共60个解,这里只选取一部分)
故A*B的最大值为15
由上述问题引伸出的三个问题:
2.满足原问题题意的不同的加法算式(竖式)共有多少个?
t02=clock;
A1=1:
9;
fori1=1:
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<
b&
d<
e&
d&
g<
h
disp(['
第'
num2str(n),'
个解:
'
...
num2str(a),'
+'
num2str(b),'
='
num2str(c),'
'
num2str(d),'
num2str(e),'
num2str(f),'
num2str(g),'
num2str(h),'
num2str(i),'
0'
])
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<
stdio.h>
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<
b++)
{
if(b==a)continue;
for(c=1;
c<
c++)
if(c==a||c==b)continue;
for(d=1;
d<
d++)
{
if(d==a||d==b||d==c)continue;
for(e=1;
e<
e++)
{
if(e==a||e==b||e==c||e==d)continue;
for(f=1;
f<
f++)
{
if(f==a||f==b||f==c||f==d||f==e)continue;
for(g=1;
g<
g++)
{
if(g==a||g==b||g==c||g==d||g==e||g==f)continue;
for(h=1;
h<
h++){
if(h==a||h==b||h==c||h==d||h==e||h==f||h==g)continue;
for(i=1;
i<
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<
b)&
(d<
e)&
d)&
(g<
h))
{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;
S1=1:
A=S1(i1);
S2=S1([1:
B=S2(i2);
S3=S2([1:
C=S3(i3);
S4=S3([1:
D=S4(i4);
S5=S4([1:
E=S5(i5);
S6=S5([1:
F=S6(i6);
S7=S6([1:
G=S7(i7);
S8=S7([1:
H=S8(i8);
I=S8([1:
if(A/(10*B+C)+D/(10*E+F)==G/(10*H+I)&
A<
D)
n=n+1;
%d/%d%d+%d/%d%d=%d/%d%d\n'
n,A,B,C,D,E,F,G,H,I);
end;
t=etime(clock,t0);
计算用时:
%g\n共有%d个解'
t,n)
1/26+5/78=4/39
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.验证本实验中的“问题四”、“问题五”的结论.能否给出相应的推理解法?
if((10*A+B)/C+(10*D+E)/F==(10*G+H)/I&
C<
F)
fprintf('
%d%d/%d+%d%d/%d=%d%d/%d\n'
运行结果:
13/2+45/6=98/7
14/2+35/7=96/8
14/2+96/8=57/3
15/3+27/9=48/6
15/3+27/9=64/8
17/2+58/4=69/3
第7个解:
18/3+27/9=54/6
18/3+54/9=72/6
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;
forc=1:
fore=1:
forf=1:
forh=1:
fori=1:
if(i==a|i==b|i==c|i==d|i==e|i==f|i==g|i==h)
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)&
d
num2str(a),'
/'
num2str(b),num2str(c),'
num2str(d),'
num2str(e),num2str(f),'
num2str(g),'
num2str(h),num2str(i)])
t3=toc;
\nTheelapsedtime(measuredbytic/toc)is:
t3)
第3个解:
第4个解:
第5个解:
第6个解:
Theelapsedtime(measuredbytic/toc)is:
86.9631
3数据的统计分析基础
实验目的
在日常生活中我们会在很多事件中收集到一些数据(比如:
考试分数、窗口排队人数、月用电量、灯泡寿命、测量误差、产品质量、月降雨量等数据),这些数据的产生一般都是随机的.这些随机数据乍看起来并没有什么