matlab实验报告
- 格式:doc
- 大小:1.83 MB
- 文档页数:30
MATLAB
数学实验报告
指导老师:
班级:
小组成员:
时间:201_/_/_
Matlab第二次实验报告
小组成员:
1题目:实验四,MATLAB选择结构与应用实验
目的:掌握if选择结构与程序流程控制,重点掌握break,return,pause语句的应用。
问题:问题1:验证“哥德巴赫猜想”,即:任何一个正偶数(n>=6)均可表示为两个质数的和。要求编制一个函数程序,输入一个正偶数,返回两个质数的和。
问题分析:由用户输入一个大于6的偶数,由input语句实现。由if判断语句判断是否输入的数据符合条件。再引用质数判断函数来找出两个质数,再向屏幕输出两个质数即可。
编程:function [z1,z2]=gede(n);
n=input('please input n')
if n<6
disp('data error');
return
end
if mod(n,2)==0
for i=2:n/2
k=0;
for j=2:sqrt(i)
if mod(i,j)==0
k=k+1;
end
end
for j=2:sqrt(n-i)
if mod(n-i,j)==0
k=k+1;
end
end
if k==0
fprintf('two numbers are')
fprintf('%.0f,%.0f',i,n-i)
break
end
end
end
结果分析:
如上图,用户输入了大于6的偶数返回两个质数5和31,通过不断试验,即可验证哥德巴赫猜想。
纪录:if判断语句与for循环语句联合嵌套使用可使程序结构更加明晰,更快的解决问题。
2题目:实验四,MATLAB选择结构与应用实验
目的:用matlab联系生活实际,解决一些生活中常见的实际问题。
问题:问题四:在一边长为1的四个顶点上各站有一个人,他们同时开始以等速顺时针沿跑道追逐下一人,在追击过程中,每个人时刻对准目标,试模拟追击路线,并讨论。(1)四个人能否追到一起?
(2)若能追到一起,每个人跑过多少路程?
(3)追到一起所需要的时间(设速率为1)
问题分析:由正方形的几何对称性和四个人运动的对称性可知,只需研究2个人的运动即可解决此问题。
编程:
hold on
axis([0 1 0 1]);
a=[0,0];
b=[0,1];
k=0;
dt=0.001;
v=1;
while k<10000
d=norm(a-b);
k=k+1;
plot(a(1),a(2),'r.','markersize',15);
plot(b(1),b(2),'b.','markersize',15);
fprintf('k=%.0f b(%.3f,%.3f) a(%.3f,%.3f) d=%.3f\n',k,b(1),b(2),a(1),a(2),d)
a=a+[(b(1)-a(1))/d*dt,(b(2)-a(2))/d*dt];
b=b+[(b(2)-a(2))/d*dt,-(b(1)-a(1))/d*dt];
if d<=0.001
break
end
end
fprintf('每个人所走的路程为:%.3f',k*v*dt)
fprintf('追到一起所需要的时间为%.3f',k*dt)
结果分析:
上图为2人的模拟运动路线,有对称性可解决所提问题。-
上图为运算过程和运算结果。四个人可以追到一起,走过的路程为1.003,时间也为1.003.
纪录:此题利用正方形和运动的对称性可以简便运算。
3题目:实验八,河流流量估计与数据插值
目的:由一些测量数据经过计算处理,解决一些生活实际问题。
问题:实验八上机练习题第三题:瑞士地图如图所示,为了算出他的国土面积,做以下测量,由西向东为x轴,由南向北为y轴,从西边界点到东边界点划分为若干区域,测出每个分点的南北边界点y1和y2,得到以下数据(mm)。已知比例尺1:2222,计算瑞士国土面积,精确值为41288平方公里。
测量数据如下:
x=[7.0 10.5 13.0 17.5 34 40.5 44.5 48 56 61 68.5 76.5 80.5 91 96 101 104 106 111.5 118 123.5 136.5 142 146 150 157 158] ;
y1=[44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68];
y2=[44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68];
问题分析:先由题目给定的数据作出瑞士地图的草图,再根据梯形法,使用trapz语句,来估算瑞士国土的面积。
编程:x=[7.0 10.5 13.0 17.5 34 40.5 44.5 48 56 61 68.5 76.5 80.5 91 96 101 104 106 111.5 118 123.5 136.5 142 146 150 157 158];
y1=[44 45 47 50 50 38 30 30 34 36 34 41 45 46 43 37 33 28 32 65 55 54 52 50 66 66 68];
y2=[44 59 70 72 93 100 110 110 110 117 118 116 118 118 121 124 121 121 121 122 116 83 81 82 86 85 68];
plot(x,y1,'r.','markersize',15);
plot(x,y2,'r.','markersize',15);
axis([0 160 0 135])
grid;hold on
t=7:158;
u1=spline(x,y1,t);
u2=spline(x,y2,t);
plot(t,u1)