当前位置:文档之家› matlab实验报告

matlab实验报告

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<6disp('data error');returnendif mod(n,2)==0for i=2:n/2k=0;for j=2:sqrt(i)if mod(i,j)==0k=k+1;endendfor j=2:sqrt(n-i)if mod(n-i,j)==0k=k+1;endendif k==0fprintf('two numbers are')fprintf('%.0f,%.0f',i,n-i)breakendendend结果分析:如上图,用户输入了大于6的偶数返回两个质数5和31,通过不断试验,即可验证哥德巴赫猜想。

纪录:if判断语句与for循环语句联合嵌套使用可使程序结构更加明晰,更快的解决问题。

2题目:实验四,MATLAB选择结构与应用实验目的:用matlab联系生活实际,解决一些生活中常见的实际问题。

问题:问题四:在一边长为1的四个顶点上各站有一个人,他们同时开始以等速顺时针沿跑道追逐下一人,在追击过程中,每个人时刻对准目标,试模拟追击路线,并讨论。

(1)四个人能否追到一起?(2)若能追到一起,每个人跑过多少路程?(3)追到一起所需要的时间(设速率为1)问题分析:由正方形的几何对称性和四个人运动的对称性可知,只需研究2个人的运动即可解决此问题。

编程:hold onaxis([0 1 0 1]);a=[0,0];b=[0,1];k=0;dt=0.001;v=1;while k<10000d=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.001breakendendfprintf('每个人所走的路程为:%.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 ont=7:158;u1=spline(x,y1,t);u2=spline(x,y2,t);plot(t,u1)plot(t,u2)s1=trapz(t,u1);s2=trapz(t,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;plot(x,y1,'k.','markersize',15);axis([0 40 0 10]);grid;hold ont=0:40;u=spline(x,y1,t);plot(t,u);s=40*10-trapz(t,u);fprintf('s=%.2f\n',s)结果分析:上图为河床的断面图。

纪录:使用梯形法计算不规则图形面积十分简便易行。

5题目:实验七:圆周率的计算与数值积分目的:使用matlab计算解决一些有关积分的问题。

问题:实验七上机练习题第三题:从地面发射一枚火箭,在最初100秒内记录其加速度如下,试求火箭在100秒时的速度。

T(s)=[0 10 20 30 40 50 60 70 80 90 100];A(m/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.6754.01 57.23];plot(x,y,'k.','markersize',15);axis([0 100 20 60]);grid;hold ons=0:10:100;z=spline(x,y,s);plot(s,y);v=trapz(x,y);fprintf('v=%.2f\n',v)结果分析:上图为加速度变化图。

上图为计算结果,求得火箭在100秒时速度约为4168.95m/s。

纪录:梯形法可以推广解决许多已知微分求积分的其他问题。

6题目:实验七:圆周率的计算与数值积分目的:计算曲线弧长闭曲线周长可使用微元法,ds=sqrt (dx^2+dy^2),在转化微积分问题,累加即可得到结果。

问题:实验七上机练习题第三题:计算椭圆想x^2/4+y^2=1的周长,使结果具有五位有效数字。

问题分析:编程:s=0;dx=0.001;for x=0:0.001:1.999dy=(1.-((x+0.001).^2)/4)-(1.-((x).^2)/4);ds=sqrt(dx.^2+dy.^2);s=s+ds;ends=4*s;fprintf('the length is')fprintf('%.4f',s)结果分析:上图为计算结果,给定椭圆的周长约为9.1823(五位有效数字)纪录:计算不规则曲线弧长,可使用微元法,划分为若干小的看做直角三角形,利用勾股定理解决。

7题目:实验九人口预测与数据拟合目的:掌握一些曲线拟合的方法,了解曲线拟合常用函数。

问题:用电压U=10v的电池给电容器充电,t时刻的电压V(t)=U-(U-V0)exp(-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];plot(t,V,'k.','markersize',20);axis([0 10 0 4]);grid;hold onpause(0.5)n=8;a=sum(t(1:n));b=sum(t(1:n).*t(1:n));c=sum(log(V(1:n)));d=sum(t(1:n).*log(V(1:n)));A=[n a;a b];B=[c;d];p=inv(A)*Bx=0:10;y=exp(p(1)+p(2)*x);plot(x,y,'r-','linewidth',2)结果分析:上图为电压与时间关系图。

相关主题