哈尔滨工程大学数学上机实验.docx
- 文档编号:27270035
- 上传时间:2023-06-28
- 格式:DOCX
- 页数:23
- 大小:58.03KB
哈尔滨工程大学数学上机实验.docx
《哈尔滨工程大学数学上机实验.docx》由会员分享,可在线阅读,更多相关《哈尔滨工程大学数学上机实验.docx(23页珍藏版)》请在冰豆网上搜索。
哈尔滨工程大学数学上机实验
实验报告
课程名称
数学实验
实验项目
数学实验上机实践
课程学时
48
上机地点
逸夫楼315,数学科学学院实验室
实验类型
综合类
实验学时
24
班级
20161122
学号
2016112201
姓名
陈宇
作业成绩
(共五档)
A
B
C
D
E
实验
完成情况
(按要求完成实验在括号内打√,没有按要求完成实验在括号内打×)
实验一:
函数绘图实验()
实验二:
微积分实验()
实验三:
数值计算实验()
实验四:
怎样计算Pi?
()
实验五:
素数实验()
实验六:
函数迭代实验()
实验七:
最佳分数近似值实验()
实验八:
分形几何实验()
实验九:
混沌实验()
实验十:
概率统计实验()
实验一:
函数绘图实验
1、实验目的
利用数学软件绘制数学函数曲线及曲面,通过实验了解函数图形的绘制方法。
2、实验内容
⑴在同一个图形中,绘制双曲线,以及的双曲线2条渐近线。
⑵在同一个图形中,绘制球面与锥面相交的曲面。
⑶自选题目:
绘制一个或者多个平面图形、空间曲面图形。
3、程序设计及运行结果
(1)>>x=-5:
0.1:
5;
ezplot('x^2-y^2=1');
y1=x;y2=-x;
holdon;
plot(xy1);
holdon;
plot(xy2);
(2)>>x=-5:
0.1:
5;y=x;z=x;
[xyz]=meshgrid(xyz);
f1=x.^2+y.^2+z.^2-1;
f2=x.^2+y.^2-z;
p1=patch(isosurface(xyzf10));
set(p1'FaceColor''m');
p2=patch(isosurface(xyzf20));
set(p2'FaceColor''w');
(3)
>>x=-5:
0.1:
5;y=x;z=x;
[xyz]=meshgrid(xyz);
f1=x.^2+y.^2+z.^2-9;
f2=x.^2+y.^2-2*z;
p1=patch(isosurface(xyzf10));
set(p1'FaceColor''m');
p2=patch(isosurface(xyzf20));
set(p2'FaceColor''w');
4、讨论与分析
在本次试验中初步了解了matlab,学会了一些简单绘图,加深了对函数的理解为以后实验作个铺垫,由浅入深的了解matlab.
实验二:
微积分实验
1、实验目的
熟悉并了解使用数学软件,进行微积分问题计算的相关数学软件命令,让学生通过实验理解微积分,解决微积分计算上的问题。
2、实验内容
⑴求函数的极值。
⑵计算二重积分其中是由所围成的区域。
⑶自选题目:
计算一个或者多个微积分习题。
3、程序设计及运行结果
(1)>>symsxy;y=2*x^3-6*x^2-18*x+7;ezplot(y[-55])
>>solve(diff(yx)x)
ans=
-1
3
>>y=diff(yx2)
y=
12*x-12
>>x=-1;eval(y)
ans=
-24
>>x=3;eval(y)
ans=
24
(2)>>symsxy;ezplot('y^2-x'[05-33]);holdon;ezplot('x-2'[05-33]);holdoff
>>symsxy;[xy]=solve('y^2-x=0''x-2=y')
x=
1
4
y=
-1
2
>>symsxy;dblquad('x*y'04-12)
ans=
12
(3)计算∫x^4/(4+4*x^2))
>>symsx
>>int(x^4/(4+4*x^2))
ans=
atan(x)/4-x/4+x^3/12
4、讨论与分析
通过本次实验,熟悉了MATLAB中求函数的导数、微分等运算的命令,掌握了MATLAB
中求函数的不定积分、定积分的命令
实验三:
数值计算实验
1、实验目的
应用数学软件进行数值计算方面的相关实验,熟悉程序设计方法。
通过求数值积分、数据拟合等问题,并结合函数绘图,去理解数学、应用数学。
2、实验内容
⑴编写使用梯形法计算积分的程序。
⑵下面的实验数据表示函数的关系,例如,数据如下:
{{01.97687}{0.052.17002}{0.12.34158}{0.152.46389}
{0.22.71512}{0.253.06045}{0.33.27829}{0.353.51992}
{0.43.8215}{0.454.2435}{0.54.55188}{0.554.88753}
{0.65.15594}{0.655.698}{0.76.04606}{0.756.42701}
{0.87.00342}{0.857.50192}{0.97.89178}{0.958.49315}{19.0938}}
试确定此函数关系,同时将这些点与所求出的函数曲线绘制在一个图形中。
⑶自选题目:
计算一个数值计算方面的问题。
3、程序设计及运行结果
(1)>>x=0:
0.01:
1;y=sin(sin(x));trapz(xy)
ans=
0.4306
(2)>>x=0:
0.05:
1
x=
1至9列
00.05000.10000.15000.20000.25000.30000.35000.4000
10至18列
0.45000.50000.55000.60000.65000.70000.75000.80000.8500
19至21列
0.90000.95001.0000
>>y=[1.976872.170022.341582.463892.715123.060453.278293.519923.82154.24354.551884.887535.155945.6986.046066.427017.003427.501927.891788.493159.0938];
>>n=3;
>>A=polyfit(xyn);
>>y1=polyval(Ax);
>>plot(xy'k*'xy1'r-');
(3)Sn=∫012*x^n/(x+1)dx其中n等于123
>>S=zeros(n1);
fori=1:
n
S(i)=quadl(@(x)2*x.^i./(x+1)01);
end
S
S=
0.6137
0.3863
0.2804
4、讨论与分析
从实验结果中我们可以得出,在一定的阶次范围内,拟合阶次越高,计算结果越精确。
最小二乘法虽然看起来简单,但它在数值计算及应用上却非常重要,
实验四:
怎样计算Pi?
1、实验目的
通过计算圆周率,熟悉数学软件的程序设计方法。
2、实验内容
寻找一种及一种以上的方法计算π,请尽量不使用教材《数学实验》中“实验二怎样计算π”中所使用过的方法,参见教材第14页---19页。
3、程序设计及运行结果
>>nd=100;
digits(nd);
nk=14;
a2=1;
k=0;
s0=1103;
fork=1:
nk
n=4*k;
a1=1;
forj=1:
n
a1=vpa(a1*j);
end
a2=vpa(k*a2);
k4=vpa(4*k);
s0=vpa(s0+a1*(1103+26390*k)/(a2^4*396^k4));
end
p=vpa(1/2/sqrt
(2)/s0*9801);
a=vpa(pi100)
a=
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068
4、讨论与分析
收敛速度较快,计算结果与pi真实值的近似程度很客观。
实验五:
素数实验
1、实验目的
通过实验理解素数理论,找出素数理论的某些规律。
2、实验内容
本实验是教材《数学实验》中“实验五素数”的练习12,参见教材第43页,原题如下:
对,计算,它们能否都给出素数?
在10000以内的素数中,由公式给出的素数占多少?
类似地,对公式以及公式做同样的判别,你自己能否给出一个或者多个类似的公式?
3、程序设计及运行结果
(1)对的计算
>>f=@(x)x^2+x+41;
a=0;b=0;c=0;k=1;m=1;
while(k<10000)
ifisprime(k)
a=a+1;
end
k=k+1;
end
while(m<100)
ifisprime(f(m))
b=b+1;
elsec=1;
end
m=m+1;
end
ifc==0
disp('Yes!
Allf(n)isprime\n')
elsedisp('*No!
Somef(n)isnotprime?
?
')
end
disp('theprimeratef(n)providingis')
b/a
a
b
*No!
Somef(n)isnotprime?
?
theprimeratef(n)providingis
ans=
0.0692
a=
1229
b=
85
(2)对计算
>>f=@(x)x^2-79*x+1601
a=0;b=0;c=0;k=1;m=1;
while(k<10000)
ifisprime(k)
a=a+1;
end
k=k+1;
end
while(m<100)
ifisprime(f(m))
b=b+1;
elsec=1;
end
m=m+1;
end
ifc==0
disp('Yes!
Allf(n)isprime\n')
elsedisp('*No!
Somef(n)isnotprime?
?
')
end
disp('theprimeratef(n)providingis')
b/a
a
b
f=
@(x)x^2-79*x+1601
*No!
Somef(n)isnotprime?
?
theprimeratef(n)providingis
ans=
0.0765
a=
1229
b=
94
(3)对计算
>>f=@(x)6*x^2+6*x+31;
a=0;b=0;c=0;k=1;m=1;
while(k<10000)
ifisprime(k)
a=a+1;
end
k=k+1;
end
while(m<100)
ifisprime(f(m))
b=b+1;
elsec=1;
end
m=m+1;
end
ifc==0
disp('Yes!
Allf(n)isprime\n')
elsedisp('*No!
Somef(n)isnotprime?
?
')
end
disp('theprimeratef(n)providingis')
b/a
a
b
*No!
Somef(n)isnotprime?
?
theprimeratef(n)providingis
ans=
0.0602
a=
1229
b=
74
(4)在10000以内的素数中,由公式3n^2+2n+1给出的素数占多少?
>>f=@(x)3*x^2+2*x+1
a=0;b=0;c=0;k=1;m=1;
while(k<10000)
ifisprime(k)
a=a+1;
end
k=k+1;
end
while(m<100)
ifisprime(f(m))
b=b+1;
elsec=1;
end
m=m+1;
end
ifc==0
disp('Yes!
Allf(n)isprime\n')
elsedisp('*No!
Somef(n)isnotprime?
?
')
end
disp('theprimeratef(n)providingis')
b/a
a
b
f=
@(x)3*x^2+2*x+1
*No!
Somef(n)isnotprime?
?
theprimeratef(n)providingis
ans=
0.0122
a=
1229
b=
15
4、讨论与分析
本实验运用更多的就是循环语句,循环方法有for语句和while语句,对本实验来说都可以达到结果。
实验六:
函数迭代实验
1、实验目的
通过实验,了解迭代及其相关性质,并利用计算机进行实现函数迭代算法。
2、实验内容
本实验是教材《数学实验》中“实验九迭代
(一)---方程求解”的练习5,参见教材第85页,原题如下:
选用几种迭代格式求的近似值,并同改进的迭代格式做比较。
3、程序设计及运行结果
>>x0=1;err=1;m=1;
whileerr>1e-100&&m<10000
x1=x0-(x0^3-2)*eps/(((x0+eps)^3-2)-(x0^3-2));
err=abs((x1-x0)/x0);
x0=x1;
m=m+1;
end
牛顿迭代
>>symsx
f=x^3-2;
df=diff(fx);
eps=1e-6;
x0=10;
cnt=0;
MAXCNT=200;%最大循环次数
whilecnt x1=x0-subs(fxx0)/subs(dfxx0);%去掉这个分号可以看到迭代过程. if(abs(x1-x0) break; end x0=x1; cnt=cnt+1; end ifcnt==MAXCNT disp'不收敛' else vpa(x18) end ans= 1.259921 4、讨论与分析 二分法计算对函数的要求是比较宽松的,而且方法从编程思想到实现都比较都比较容易,但是二分法收敛速度不是太快.对同一函数,运用不同迭代方法求解,所得到的结果是有差别的,但大体上结果是接近的,并且迭代次数越多结果越相近。 实验七: 最佳分数近似值实验 1、实验目的 通过对无理数的最佳分数逼近方法的试验,理解近似计算的方法。 2、实验内容 本实验是教材《数学实验》中“实验三最佳分数近似值”的练习3,参见教材第28页。 利用连分数展开方法求出的分母在小于等于1000以内的所有既约分数近似值,并给出这些近似值中的最佳近似值。 3、程序设计及运行结果 function L=sssm(n) q (1)=1; j=1; fori=1: n; q(i+1)=q(i)+1; p(i)=round(q(i)*pi); p(i+1)=round(q(i+1)*pi); ifabs(pi-p(i)/q(i))>=abs(pi-p(i+1)/q(i+1)); L(j)=p(i+1)/q(i+1); j=j+1; end end formatrat p/q 运行结果: >>sssm(1000) >>L=sssm(1000)L= Columns1through7 3.00003.00003.25003.18183.14753.14713.1467 Columns8through14 3.14633.14613.14583.14563.14553.14373.1436 Columns15through21 3.14363.14363.14363.14353.14353.14353.1429 Columns22through28 3.14293.14293.14293.14293.14293.14293.1429 Columns29through35 3.14253.14253.14253.14253.14253.14253.1425Columns36through42 3.14253.14233.14233.14233.14233.14233.1423 Columns43through49 3.14233.14233.14223.14223.14223.14223.1422 Columns50through56 3.14223.14223.14223.14213.14213.14213.1421 Columns57through63 3.14213.14213.14213.14213.14203.14203.1420 Columns64through70 3.14203.14203.14213.14213.14213.14203.1420 Columns71through74 3.14203.14203.14203.1420 4、讨论与分析 通过上述实验,我们也可将误差小、分母小这两个标准综合起来Pi的连分数的展开: 实验结果接近,但还存在误差 上述近似值中最佳逼近至为3.1420. 实验八: 分形几何实验 1、实验目的 通过实验了解分形及分形图像的特点、分形图像的绘制方法。 2、实验内容 本实验是教材《数学实验》中“实验十二迭代 (二)---分形”,参见教材第117-136页。 ⑴利用计算机绘出Sierpinski三角形。 ⑵自选题目: 绘制其它分形图形。 3、程序设计及运行结果 (1)>>a=1;b=0.5;c=1; k=7; A=zeros(23^(k+1)); A(: 1: 3)=[0ab;00c]; forn=1: k B=1/2*A; A(: 1: 3^n)=B(: 1: 3^n); A(: 3^n+1: 2*3^n)=B(: 1: 3^n)+1/2*[a;0]*ones(13^n); A(: 2*3^n+1: 3^(n+1))=B(: 1: 3^n)+1/2*[b;c]*ones(13^n); end fori=1: 3^k patch(A(13*i-2: 3*i)A(23*i-2: 3*i)'r'); end (2)functiontree(nab) %tree(8pi/8pi/8)n为分形树迭代次数 %ab为分枝与竖直方向夹角 %x1y1x2y2为初始线段两端点坐标nn为迭代次数 n=8;a=pi/6;b=pi/6; x1=0;y1=0; x2=0;y2=1; plot([x1x2][y1y2]) holdon [XY]=tree1(x1y1x2y2ab); holdon W=tree2(XY); w1=W(: 1: 4); w2=W(: 5: 8); %w为2^k*4维矩阵存储第k次迭代产生的分枝两端点的坐标 %w的第i(i=12…2^k)行数字对应第i个分枝两端点的坐标 w=[w1;w2]; fork=1: n fori=1: 2^k [XY]=tree1(w(i1)w(i2)w(i3)w(i4)ab); W(i: )=tree2(XY); end w1=W(: 1: 4); w2=W(: 5: 8); w=[w1;w2]; end %由每个分枝两端点坐标(x1y1)(x2y2)产生两新点的坐标(x3y3)(x4y4)画两分枝图形并把%(x2y2)连同新点横、纵坐标分别存储在数组XY中 function[XY]=tree1(x1y1x2y2ab) L=sqrt((x2-x1)^2+(y2-y1)^2); if(x2-x1)==0 a=pi/2; elseif(x2-x1)<0 a=pi+atan((y2-y1)/(x2-x1)); else a=atan((y2-y1)/(x2-x1)); end end x3=x2+L*2/3*cos(a+b); y3=y2+L*2/3*sin(a+b); x4=x2+L*2/3*cos(a-b); y4=y2+L*2/3*sin(a-b); a=[x3x2x4]; b=[y3y2y4]; plot(ab) axisequal holdon X=[x2x3x4]; Y=[y2y3y4]; %把由函数tree1生成的XY顺次划分为两组分别对应两分枝两个端点的坐标并存储在一维%数组w中 functionw=tree2(XY) a1=X (1);b1=Y (1); a2=X (2);b2=Y (2); a3=X (1);b3=Y (1); a4=X(3);b4=Y(3); w=[a1b1a2b2a3b3a4b4]; 4、讨论与分析 通过本次的实验,我更了解了几何分形图以及用matlab软件产生几何分形图的方法、程序结构。 总的来说,通过本次实验,学习到了matlab软件的一种新的用法,对自己的数学实验能力又提升了不少 实验九: 混沌实验 1、实验目的 通过实验,观察混沌现象,进而发现隐藏在混沌后面的数学规律。 2、实验内容 本实验是教材《数学实验》中“实验十三迭代(三)---混沌”的练习7,参见教材第139页,原题如下: 观察Feigenbaum图。 在它的左部有一条曲线,这代表迭代具有唯一的吸引不动点。 ⑴从某一点开始,该条曲线分成两条曲线,这说明了迭代的什么性质? 迭代的点列是如何运动的? ⑵再在下一个分支点,曲线分成几个分支? 这说明迭代的什么性质? 相应的迭代点列是如何运动的? ⑶上述分支过程是否一直进行下去? 是否存在一个极限分支? 在极限分支点之后,Feigenbaum图是否显得很混乱? ⑷估计出等的值,再计算等,它们是否比较接近? 由此猜测数列是否会收敛? 3、程序设计及运行结果 clear;clf; holdon axis([05-55]); grid fora=0: 0.005: 5 x=[0.2]; fori=2: 150 x(i)=a*sin(pi*x(i-1)); end pause(0.1) fori=101: 150 plot(ax(i)'k.'); end end 4、讨论与分析 混沌系统普遍对初值高度敏感,其行为不可预测,呈现随机性 实验十: 概率统计实验 1、实验目的 通过实验,让学生利用计算机观察随机现象及其相应的性质、规律。 2、实验内容 本实验是教材《数学实验》中“实验六概率”的练习6,参见教材第56-57页,原题如下: 设T是在区间[01]内均匀分布的随机变量。 让T连取n个值,则这n个值的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈尔滨工程 大学 数学 上机 实验