《计算方法》上机指导书实验1MATLAB基本命令1.掌握MATLAB的程序设计实验内容:对以下问题,编写M文件。(1)生成一个5×5矩阵,编程求其最大值及其所处的位置。(2)编程求201!nn。(3)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹有多高?2.掌握MATLAB的绘图命令实验内容:对于自变量x的取值属于[0,3],在同一图形窗口画出如下图形。(1)1sin()cos()yxx;(2)212sin()cos()3yxx;实验2插值方法与数值积分1.研究人口数据的插值与预测实验内容:下表给出了从1940年到1990年的美国人口,用插值方法推测1930年、1965年、2010年人口的近似值。美国人口数据年194019501960197019801990人口(千人)132,165151,326179,323203,302226,542249,6331930年美国的人口大约是123,203千人,你认为你得到的1965年和2010年的人口数字精确度如何?2.最小二乘法拟合经验公式实验内容:某类疾病发病率为y‰和年龄段x(每五年为一段,例如0~5岁为第一段,6~10岁为第二段……)之间有形如bxaey的经验关系,观测得到的数据表如下x123456789y0.8982.383.071.842.021.942.222.774.02x10111213141516171819y4.765.466.5310.916.522.535.750.661.681.8(1)用最小二乘法确定模型bxaey中的参数a和b。(2)利用MATLAB画出离散数据及拟合函数bxaey图形。3.复化求积公式实验内容:对于定积分1024dxxxI。(1)分别取利用复化梯形公式计算,并与真值比较。再画出计算误差与n之间的曲线。(2)取[0,1]上的9个点,分别用复化梯形公式和复化辛普森公式计算,并比较精度。实验3非线性方程与线性方程组1.矩阵的范数与条件数实验内容:已知矩阵1111111111111111A求1A,2A,A和)(2Acond。2.研究高斯消去法的数值稳定性实验内容:设方程组bAx,其中(1)11212592.1121130.6291.51314.59103.0151A,2178.4617.591b(2)201015152699990999999999.23107102A,1500019000000000.582b分别对以上两个方程组(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的?(2)用列主元消去法求得L和U及解向量421,Rxx;(3)用不选主元的高斯消去法求得L和U及解向量421~,~Rxx;(4)观察小主元并分析对计算结果的影响。3.求解非线性方程,比较不同方法的计算量实验内容:比较求0210xex的根到三位小数所需的计算量:(1)在区间[0,1]内用二分法;(2)用迭代法10/)2(1kxkex,初值00x;(3)用牛顿迭代法,取初值00x。《计算方法》上机实验报告姓名:陶成川学号:U201410820班级:机械09一、问题1.研究人口数据的插值与预测实验内容:下表给出了从1940年到1990年的美国人口,用插值方法推测1930年、1965年、2010年人口的近似值。美国人口数据年194019501960197019801990人口(千人)132,165151,326179,323203,302226,542249,6331930年美国的人口大约是123,203千人,你认为你得到的1965年和2010年的人口数字精确度如何?2.最小二乘法拟合经验公式实验内容:某类疾病发病率为y‰和年龄段x(每五年为一段,例如0~5岁为第一段,6~10岁为第二段……)之间有形如bxaey的经验关系,观测得到的数据表如下x123456789y0.8982.383.071.842.021.942.222.774.02x10111213141516171819y4.765.466.5310.916.522.535.750.661.681.8(1)用最小二乘法确定模型bxaey中的参数a和b。(2)利用MATLAB画出离散数据及拟合函数bxaey图形。3.复化求积公式实验内容:对于定积分1024dxxxI。(1)分别取利用复化梯形公式计算,并与真值比较。再画出计算误差与n之间的曲线。(2)取[0,1]上的9个点,分别用复化梯形公式和复化辛普森公式计算,并比较精度。二、Matlab程序1.%构造lagrange插值函数functiony1=lagrange(x,y,x1)m=length(x);n=length(y);p=length(x1);ifm~=nerror;ends=0;fork=1:nt=ones(1,p);forj=1:nifj~=k,t=t.*(x1-x(j))/(x(k)-x(j));endends=s+t*y(k);endy1=s;%在界面中运行x=[194019501960197019801990];y=[132.165151.326179.323203.302226.542249.633];y1930=lagrange(x,y,1930);y1965=lagrange(x,y,1965);y2010=lagrange(x,y,2010);fprintf('thepopulationin1930is%f\n',y1930)fprintf('thepopulationin1965is%f\n',y1965)fprintf('thepopulationin2010is%f\n',y2010)2.x=[12345678910111213141516171819];y=[0.8982.383.071.842.021.942.222.774.024.765.466.5310.916.522.535.750.661.681.8];yi=log(y);a=polyfit(x,yi,1);ai=exp(a(2));xm=1:0.05:19;ym=ai*exp(a(1).*xm);plot(x,y,'*k',xm,ym,'-y')fprintf('ais%f\n',ai)fprintf('bis%f\n',a(1))3.(1)%构造复合梯形积分公式functionI=tquad(x,y)n=length(x)m=length(y)ifn~=merrorendh=(x(n)-x(1))/(n-1)a=[12*ones(1,n-2)1]I=h/2*sum(a.*y)End%用梯形公式计算积分formatlongx=0:0.1:1;y=x./(4+x.^2);I1=tquad(x,y)%计算积分formatlongf=inline('x./(4+x.^2)');I=quadl(f,0,1)%作误差与n的关系曲线%构造函数functionI=tq(k)x=0:0.9/k:1;y=x./(4+x.^2);n=length(x);m=length(y);ifn~=merror;endh=(x(n)-x(1))/(n-1);a=[12*ones(1,n-2)1];I=h/2*sum(a.*y);end%计算并作图n=1:100;t1=ones(1,100);fork=1:100t1(k)=t1(k)*tq(k);endf=inline('x./(4+x.^2)');I=quadl(f,0,1);t2=I-t1;plot(n,t2,'*k',n,t2,'-y')(2)%构造复合辛普森积分公式functionI=simpsion(x,y)m=length(x);n=length(y);ifm~=nerror;endifrem(n-1,2)~=0I=tquad(x,y);return;end;N=(n-1)/2;h=(x(n)-x(1))/N;a=zeros(1,n);fork=1:Na(2*k-1)=a(2*k-1)+1;a(2*k)=a(2*k)+4;a(2*k+1)=a(2*k+1)+1;endI=h/6*sum(a.*y);End%分别计算积分formatlongx=0:0.1:1;y=x./(4+x.^2);isimosion=simpsion(x,y)itquad=tquad(x,y)三、结果通过Matlab程序运行结果如下:1.thepopulationin1930is169.649000thepopulationin1965is191.767359thepopulationin2010is171.351000由于lagrange插值不能准确估计范围外的数值,因此1930年和2010年的误差较大。2.ais0.681361bis0.2306203.(1)I1=0.111463380815167I=0.111571775612031(2)isimosion=0.111572023176794itquad=0.111463380815167积分值为0.111571775612031显然simpsion公式精度更高