matlab数学实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
MATLAB
数学实验报告
指导老师:
班级:
小组成员:
时间:201_/_/_
Matlab第二次实验报告
小组成员:
1题目:实验四;MATLAB选择结构与应用实验
目的:掌握if选择结构与程序流程控制;重点掌握break;return;pause语句的应用..
问题:问题1:验证“哥德巴赫猜想”;即:任何一个正偶数n>=6均可表示为两个质数的和..要求编制一个函数程序;输入一个正偶数;返回两个质数的和..
问题分析:由用户输入一个大于6的偶数;由input语句实现..由if判断语句判断是否输入的数据符合条件..再引用质数判断函数来找出两个质数;再向屏幕输出两个质数即可..
编程:function z1;z2=geden;
n=input'please input n'
if n<6
disp'data error';
return
end
if modn;2==0
for i=2:n/2
k=0;
for j=2:sqrti
if modi;j==0
k=k+1;
end
end
for j=2:sqrtn-i
if modn-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
axis0 1 0 1;
a=0;0;
b=0;1;
k=0;
dt=0.001;
v=1;
while k<10000
d=norma-b;
k=k+1;
plota1;a2;'r.';'markersize';15;
plotb1;b2;'b.';'markersize';15;
fprintf'k=%.0f b%.3f;%.3f a%.3f;%.3f d=%.3f\n';k;b1;b2;a1;a2;d
a=a+b1-a1/d*dt;b2-a2/d*dt;
b=b+b2-a2/d*dt;-b1-a1/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;
plotx;y1;'r.';'markersize';15;
plotx;y2;'r.';'markersize';15;
axis0 160 0 135
grid;hold on
t=7:158;
u1=splinex;y1;t;
u2=splinex;y2;t;
plott;u1
plott;u2
s1=trapzt;u1;
s2=trapzt;u2;
s=s2-s1*2222*22222/10000000;
fprintf'S=%.0f';s
结果分析:
上图为由所给数据绘制出的瑞士地图..
上图为运算结果;计算出瑞士的国土面积为42472平方公里;与准确值41288较为接近..
纪录:使用梯形分割的方法;trapz语句可以方便计算不规则图形面积;但存在一定误差..
4题目:实验七:圆周率的计算与数值积分
目的:将数值积分最基本的原理应用于matlab之中;解决一些与积分有关的问题..
问题:实验七上机练习题第一题:排洪量某河床的横断面如图7.3所示;为了计算最大排洪量;需要计算其断面积;试根据所给数据m用梯形法计算其断面积..
问题分析:河床断面可近似分割成若干曲边梯形;近似处理把它们当做梯形来计算面积可使问题得到简化..
编程:
clc;clear;
x=0 4 10 12 15 22 28 34 40;
y=0 1 3 6 8 9 5 3 0;
y1=10-y;
plotx;y1;'k.';'markersize';15;
axis0 40 0 10;
grid;
hold on
t=0:40;
u=splinex;y1;t;
plott;u;
s=40*10-trapzt;u;
fprintf's=%.2f\n';s
结果分析:上图为河床的断面图..
上图为计算结果面积约为180.70平方米..
纪录:使用梯形法计算不规则图形面积十分简便易行..
5题目:实验七:圆周率的计算与数值积分
目的:使用matlab计算解决一些有关积分的问题..
问题:实验七上机练习题第三题:从地面发射一枚火箭;在最初100秒内记录其加速度如下;试求火箭在100秒时的速度..
Ts=0 10 20 30 40 50 60 70 80 90 100;
Am/s*s=30.00 31.63 33.44 35.47 37.75 40.33 43.29 46.69 50.67 54.01 57.23;
问题分析:加速度为速度的微分;已知微分求积分;类似于面积问题;可使用梯形法来计算..
编程:
clc;clear;
x=0 10 20 30 40 50 60 70 80 90 100;
y=30.00 31.63 33.44 35.47 37.75 40.33 43.29 46.69 50.67
54.01 57.23;
plotx;y;'k.';'markersize';15;
axis0 100 20 60;
grid;
hold on
s=0:10:100;
z=splinex;y;s;
plots;y;
v=trapzx;y;
fprintf'v=%.2f\n';v
结果分析:
上图为加速度变化图..
上图为计算结果;求得火箭在100秒时速度约为4168.95m/s..
纪录:梯形法可以推广解决许多已知微分求积分的其他问题..
6题目:实验七:圆周率的计算与数值积分
目的:计算曲线弧长闭曲线周长可使用微元法;ds=sqrtdx^2+dy^2;在转化微积分问题;累加即可得到结果..
问题:实验七上机练习题第三题:计算椭圆想x^2/4+y^2=1的周长;使结果具有五位有效数字..
问题分析:
编程:s=0;
dx=0.001;
for x=0:0.001:1.999
dy=1.-x+0.001.^2/4-1.-x.^2/4;
ds=sqrtdx.^2+dy.^2;
s=s+ds;
end
s=4*s;
fprintf'the length is'
fprintf'%.4f';s
结果分析:
上图为计算结果;给定椭圆的周长约为9.1823五位有效数字
纪录:计算不规则曲线弧长;可使用微元法;划分为若干小的看做直角三角形;利用勾股定理解决..
7题目:实验九人口预测与数据拟合
目的:掌握一些曲线拟合的方法;了解曲线拟合常用函数..
问题:用电压U=10v的电池给电容器充电;t时刻的电压Vt=U-U-V0exp-t/τ;其中V0是电容器的初始电压;τ是充电常数;由所给数据确定V0和τ..
t=0.5 1 2 3 4 5 7 9;
V=3.64 3.52 2.74 1.78 1.34 1.01 0.57 0.37;
问题分析:题中已给出函数关系式;为指数函数曲线拟合;将所给函数式整理可得标准的exp形函数曲线;从而便于解决..
编程:
t=0.5 1 2 3 4 5 7 9;
V=3.64 3.52 2.74 1.78 1.34 1.01 0.57 0.37;
plott;V;'k.';'markersize';20;
axis0 10 0 4;
grid;hold on
pause0.5
n=8;
a=sumt1:n;
b=sumt1:n.*t1:n;
c=sumlogV1:n;
d=sumt1:n.*logV1:n;
A=n a;a b;
B=c;d;
p=invA*B
x=0:10;
y=expp1+p2*x;
plotx;y;'r-';'linewidth';2
结果分析:上图为电压与时间关系图..
上图为计算结果;即U-V0=1.4766;所以V0=8.5234;-1/τ=-0.2835;所以τ=3.5273
纪录:曲线拟合的一个重难点是选择合适的曲线函数;才能提高拟合度..
8题目:实验七圆周率的计算与数值积分
目的:拓展圆周率的各种计算方法;掌握其他数值的近似计算方法..
问题:实验七练习2:计算ln2的近似值精确到10的-5次方(1)利用级数展开的方法来计算
(2)利用梯形法计算
(3)利用抛物线法
问题分析:级数展开;梯形法;抛物线法是常见的近似运算方法..
编程:1级数展开的方法
clc;clear;
n=0;
r=1;
p=0;
k=-1;
while r>=0.1e-5
n=n+1;
k=k*-1;
p1=p+k/n;
r=absp1-p;
fprintf'n=%.0f;p=%.10f\n';n;p1;
p=p1;
end
2梯形法
clc;clear;
f=inline'1./x';
x=1:0.1:2;
y=fx;
p=trapzx;y;
fprintf'p=%.6f\n';p
3抛物线法
clc;clear;
f=inline'1./x';
a=1;b=2;n=1;
z=quadf;a;b;
fprintf'z=%.10f\n';z
结果分析:
(1)级数展开的方法(2)梯形法
3抛物线法
纪录:级数展开法;梯形法;抛物线法;计算近似值时应合理利用..梯形法和抛物线法不易提高精确度;级数展开法可以提高精确度..
9题目:实验八河流流量估计与数据插值
目的:掌握求插值多项式的方法;并利用此计算近似值..
问题:已知y=fx的函数表如下
x=0.40 0.55 0.65 0.80 0.90 1.05;
y=0.41075 0.57815 0.69675 0.88811 1.02652 1.25382;
求四次拉格朗日插值多项式;并由此求f0.596
问题分析:利用所给函数表可计算拉格朗日插值多项式..
编程:function p=lagrangex;y
L=lengthx;
a=onesL;
for j=2:L
a:;j=a:;j-1.*x';
end
x=inva*y';
for i=1:L
pi=xL-i+1;
end
x=0.40 0.55 0.65 0.80 0.90 1.05;
y=0.41075 0.57815 0.69675 0.88811 1.02652 1.25382; plotx;y;'k.';'markersize';15
axis0 2 0 2
grid;
hold on;
p=lagrangex;y;
t=0:0.1:1.5;
u=polyvalp;t;
plott;u;'r-'
a=polyvalp;0.596
结果分析:
上图为所求结果;估算值和插值多项式..
纪录:插值多项式是一项十分实用的方法..
10题目:求正整数n的阶乘:p=1*2*3*…*n=n;并求出n=20时的结果
目的:练习使用循环变量解决数学问题
问题:对程序:
Clear;clc;
n=20;
p=1;
for i=1:n
p=p*i;
fprintf’i=%.0f;p=%.0f\n’;i;p
end
进行修改使它:
利用input命令对n惊醒赋值
问题分析:题中给出程序中“n=20”修改;使用input命令;
讲题中的输出命令放出循环之外..
编程:
clear;clc;
n=input'n=';
p=1;
for i=1:n
p=p*i;
end
fprintf'i=%.0f;p=%.0f\n';i;p
结果:n=20
i=20;p=2432902008176640000
>>
结果分析:使用input命令可以实现人机对话;使用户自由赋值;输出语句在程序中的位置对输出的结果有很大的影响;在循环内部可以在计算过城中不断输出结果;在循环之外则可以控制只输出最后结果..
11题目:对于数列{√2};n=1;2;…;求当其前n项和不超过1000时的n的值及合的大小..
目的:运用条件循环解决文帝个项数的循环程序求解;
问题:对程序:
clear;clc;
n=0;
s=0;
while s<=1000
n=n+1;
s=s+sqrtn;
fprintf’n=%.0f;s=%.4f\n’;n;s
end
问题分析:题中所给程序中的限制变量为上次循环之后的s;导致s超过上限后仍有一次的循环;若把循环变量改为这次的s;则可以避免这种情况的发生..
编程:clear;clc;
n=0;
s=0;
while s+sqrtn<=1000
n=n+1;
s=s+sqrtn
fprintf'n=%.0f;s=%.4f\n';n;s
end
结果:
……
s =
970.8891
n=128;s=970.8891
s =
982.2469
n=129;s=982.2469
s =
993.6487
n=130;s=993.6487
>>
结果分析:从结果中可以看出;最后一步为我们需要的答案;从这道题我们可以得出循环变量对一道编程的重要性..。