数值分析实验报告_第1页
数值分析实验报告_第2页
数值分析实验报告_第3页
数值分析实验报告_第4页
数值分析实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、湖北民族学院理学院数值分析课程实验报告(一)课程名称数值分析班级0212404实验日期2014/12/15姓名向义俊学号021240418实验成绩实验名称实验一算法的稳定性分析与误差分析(验证性实验)实验目的及要求1、 理解算法的数值稳定性概念2、 会进行算法的舍入误差和截断误差分析实验环境Matlab软件实验内容设计两个算法计算下面的定积分并估计误差。要求两个算法理论正确,并且一个算法是不稳定的,另外一个算法是数值稳定的。算法描述及实验步骤算法描述:由于初始数据误差在计算中传播使计算结果误差增长很快,就数值不稳定。实验步骤:由分部积分可得计算的递推公式 (1)若计算出,代入(1)式,可逐次求

2、出 的值。要算出就要先算出,若用泰勒多项式展开部分和 并取k=19,用4位小数计算,则得,截断误差.计算过程中小数点后第5位的数字按四舍五入原则舍入,由此产生的舍入误差这里先不讨论。当初值取为时,用(1)式递推的计算公式为,n=1,2,。计算结果见表1的列。用近似产生的误差就是初值误差,它对后面计算结果是有影响的.从表1中看到出现负值,这与一切相矛盾。实际上,由积分估值得 (2)因此,当n较大时,用近似显然是不正确的。这里计算公式与每步计算都是正确的,那么是什么原因合计算结果出现错误呢?主要就是初值有误差,由此引起以后各步计算的误差满足关系由此容易推得,这说明有误差,则就是的n!倍误差。例如,

3、n=19,若,则。这就说明完全不能近似了。它表明计算公式(A)是数值不稳定的。我们现在换一种计算方案。由(2)式取n=19,得,我们粗略取,然后将公式(1)倒过来算,即由算出,公式为计算结果见表1的列。我们发现与的误差不超过。记,则,比缩小了n!倍,因此,尽管较大,但由于误差逐步缩小,故可用近似。反之,当用方案(A)计算时,尽管初值相当准确,由于误差传播是逐步扩大的,因而计算结果不可靠。此例说明,数值不稳定的算法是不能使用的。 实验结果和分析总结实验一:实验二:方案一尽管相当准确,由于误差传播使逐步扩大的,因而计算结果不可靠。方案二比缩小了倍,尽管较大,但误差是逐步缩小的,故可靠。附录程序算法

4、一I(1)=0.6321;for i=1:9 I(i+1)=1-i*I(i);endI算法二I(9)=0.0684;for i=9:-1:2 I(i-1)=1/i*(1-I(i);endI湖北民族学院理学院数值分析课程实验报告(二)课程名称数值分析班级0212404实验日期2014/12/15姓名向义俊学号021240418实验成绩实验名称实验二 多项式插值(验证性实验)实验目的及要求1、 掌握拉格郎日插值多项式的用法,适用范围及精确度。2、 掌握牛顿插值多项式的用法,适用范围及精确度。3、掌握分段线性插值与三次样条插值的基本原理,会利用Matlab库函数进行分段线性插值与三次样条插值。实验环

5、境Matlab软件实验内容已知函数在下列个点的值为1进行Lagrange插值,Newton插值,画出插值多项式的图形。0.20.40.60.81.00.980.920.810.640.382. 进行分段线性插值与三次样条插值,画出插值多项式的图形。3. 采用四种插值方法计算处的近似值。算法描述及实验步骤算法分析:Lagrange插值计算:Lagrange插值函数Newton插值公式:分段插值:简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记作它满足 ,且在每个小区间上是线性函数 。可以表示为 实验步骤:由于中含有3+n个待定系数,故应需要3+n个插值条件,已

6、知插值节点和相应的函数值,这里提供了1+1个条件,还需要2个边界条件。实验结果和分析总结分析总结:拉格朗日插值多项式,公式结构紧凑,相对于理论分析比较重要。当插值节点增加或减少时,计算要全部重新开始,计算量大;其插值曲线光滑,误差估有表达式。但当节点再次增加时,它就会表现出Runge现象。牛顿插值多项式,具有一定的继承性,计算方便。分段低次插值分段Hermit插值三次样条插值都避免了Runge现象的产生。但分段低次插值函数的导数是间断的;分段Hermit插值比分段低次插值效果较好。但它要给出节点上的导数值,要的信息太多,并且也不太光滑,即,光滑度不高。所以三样条插值就避免了以上的缺点。附录程序

7、1.1、Lagrange插值function y=lagrange(x0,y0,x)n=length(x0);m=length(x);for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j=k p=p*(z-x0(j)/(x0(k)-x0(j); end end s=p*y0(k)+s; end y(i)=s;end在运行窗口输入x0=0.2:0.2:1;y0=0.98 0.92 0.81 0.64 0.38;x=0.2:0.05:1;y=lagrange(x0,y0,x)plot(x0,y0,'r',x,y)1.2Ne

8、wton插值function f = Newton(x,y,x0)syms t; if(length(x) = length(y) n = length(x); c(1:n) = 0.0;else return;end f = y(1);y1 = 0;l = 1; for(i=1:n-1) for(j=i+1:n) y1(j) = (y(j)-y(i)/(x(j)-x(i); end c(i) = y1(i+1); l = l*(t-x(i); f = f + c(i)*l; simplify(f); y = y1; if(i=n-1) if(nargin = 3) f = subs(f,&#

9、39;t',x0); else f = collect(f); f = vpa(f, 6); end endend在运行窗口输入x0=0.2:0.2:1; y0=0.98 0.92 0.81 0.64 0.38;x=0.2:0.05:1;y=Newton(x0,y0,x)plot(x0,y0,'r',x,y)1.3分段线性插值 在运行窗口输入x0=0.2:0.2:1;y0=0.98 0.92 0.81 0.64 0.38;x=0.2:0.05:1;y=interp1(x0,y0,x)plot(x0,y0,'r',x,y)title('分段线性插值

10、');1.4三次样条插值在运行窗口输入x0=0.2:0.2:1;y0=0.98 0.92 0.81 0.64 0.38;x=0.2:0.05:1;y=spline(x0,y0,x)plot(x0,y0,'r',x,y)title('三次样条插值'); 湖北民族学院理学院数值分析课程实验报告(五)课程名称数值分析班级0212404实验日期2012/12/23姓名向义俊学号021240418实验成绩实验名称实验四 线性方程组的直接法(验证性实验)实验目的及要求1、掌握高斯消去法求解线性方程组2、掌握LU分解法求解线性方程组实验环境Matlab软件实验内容编制

11、程序,用掌握列主元高斯消去法和LU分解法求解线性方程组,其中 , 算法描述及实验步骤(1)列主元消去法: 先编写M文件liezhu.m,然后在命令窗口中输入A=10 -7 0 1;-3 2.099999 6 2;5 -1 5 -1;2 10 0 2; b=8 5.900001 5 1'RA,RB,n,X=liezhu(A,b) 运行程序,即可得结果(2)LU分解法: 先将A做LU分解,用L,U=lu(A)得出L和U。由于A=L*U,令Ux=y,则有y=Lb,x=Uy,即可求解。实验结果和分析总结(1) 列住元高斯消去法: X = 0.4436 -0.2923 0.80151.5178(

12、2)LU分解法:L = 1.0000 0 0 0 -0.3000 -0.0000 1.0000 0 0.5000 0.2193 0.8333 1.0000 0.2000 1.0000 0 0U = 10.0000 -7.0000 0 1.0000 0 11.4000 0 1.8000 0 0 6.0000 2.3000 0 0 0 -3.8114X = 0.4436 -0.2923 0.8015 1.5178附录程序 (1)列主元高斯消去法:function RA,RB,n,X=liezhu(A,b)B=A b; n=length(b); RA=rank(A); RB=rank(B);zhic

13、a=RB-RA;if zhica>0,disp('请注意:因为RA=RB,所以此方程组无解.')returnendif RA=RB if RA=ndisp('请注意:因为RA=RB=n,所以此方程组有唯一解.') X=zeros(n,1); C=zeros(1,n+1); for p= 1:n-1Y,j=max(abs(B(p:n,p); C=B(p,:);B(p,:)= B(j+p-1,:); B(j+p-1,:)=C;for k=p+1:n m= B(k,p)/ B(p,p); B(k,p:n+1)= B(k,p:n+1)-m* B(p,p:n+1);

14、endend湖北民族学院理学院数值分析课程实验报告(六)课程名称数值分析班级0212404实验日期2014/12/23姓名向义俊学号021240418实验成绩实验名称实验四 线性方程组的迭代法(验证性实验)实验目的及要求1、掌握雅克比迭代算法程序设计2、掌握高斯赛德尔迭代算法程序设计实验环境Matlab软件实验内容编制程序,用雅克比迭代算法和高斯赛德尔迭代算法求解线性方程组,其中 , 算法描述及实验步骤首先把所给内容化成:x=Bx+f的形式,然后给出初始向量:,并按迭代公式 进行计算,如果按上述迭代公式所得到的向量序列收敛于某一向量,则就是方程组的解,并称此迭代法收敛;否则称为不收敛或发散。称

15、B为迭代矩阵。Jacobi迭代设有线性方程组即式中,非奇异,且由式(*)得到 其相应的迭代公式为 (*)称迭代公式(*)为Jacobi迭代。1、Jacobi迭代法的程序算法:(1)取初始点,置k等于0,精度要求和最大迭代次数N(2)用式(*)计算(3)若,则停止计算(作为线性方程组的解)。(4)若k=N,则停止计算(输出某些信息),否则置k=k+1,转(2)2、Gauss-Seidel迭代法其中。其迭代法优点为只需一组存储单元。实验结果和分析总结(1)在Matlab命令窗口输入如下命令>> A = 5 2 1;-1 4 2;2 -3 10;>> b = -12 20 3

16、'>> ep = 1e-5;>> x0 = 0 0 0;>> it_max = 90;>> x,k,index = Jacobi(A,b,x0,ep,it_max)x = -3.9997 2.9998 1.9998k = 14index = 1由index = 1可知,方程迭代14次后得到满足要求的近似解。(1)在Matlab命令窗口输入如下命令>> A = 5 2 1;-1 4 2;2 -3 10;>> b = -12 20 3'>> ep = 1e-5;>> x0 = 0 0 0

17、;>> it_max = 90;>> x,k,index = Jacobi(A,b,x0,ep,it_max)x = -4 3.0001 2k = 7index = 1由index = 1可知,方程迭代7次后得到满足要求的近似解。附录程序1、Jacobi迭代法:function x,k,index = Jacobi(A,b,x0,ep,it_max)if nargin < 4 it_max = 100;endif nargin < 3 ep = 1e-5;endn = length(A);k=0;x = zeros(n,1);y = zeros(n,1);index = 1;while 1 for i=1:n y(i)=b(i); for j=1:n if j=i y(i)=y(i)-A(i,j)*x(j); end end if abs(A(i,i)<1e-10|k=it_max index = 0; return; end y(i)=y(i)/A(i,i); end if norm(y-x,inf)<ep break; end x=y; k=k+1;end2.高斯赛德尔迭代法:function x,n=gsdddy(A,b,x0,eps,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论