计算方法实验报告_第1页
计算方法实验报告_第2页
计算方法实验报告_第3页
计算方法实验报告_第4页
计算方法实验报告_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、计算方法与实习实验报告 目录实习题1-13实习题2-1(1)4实习题3-25实习题3-5(1)7实习题4-210实习题5-111实习题614实习题1-1用2种不同的顺序计算,分析其误差的变化。算法1:从n=1开始累加,n逐步增大,直至n=10000算法2:从n=10000开始累加,n逐步减小,直至n=1算法1的Matlab程序如下:m=0;for n=1:10000yl=1/(n.*n);m=m+yl;endformat longm算法1的输出结果m=1.8065算法2的Matlab程序如下:m=0;for n=10000:-1:1yl=1/(n.*n);m=m+yl;endformat lo

2、ngm算法2的输出结果m=1.8060结论分析:由运行结果可以发现,当从n=1开始计算时,算出结果为1.8065,而当从n=10000开始计算时,算出结果为1.8060.与题中所给结果相比,可知从n=10000开始计算时,所得近似结果更接近真实值。原因是从n=1开始算时,由于被累加的数是越来越小的,而且开始的几个数比后面的数大得多,而浮点数保留位数有限,因此在累加过程中出现了大数吃小数的现象,导致误差较大。而从n=10000开始累加就很好地避免以上问题,从而能够更接近精确值。实习题2-1(1)用牛顿法求方程的根算法:给定初始值,为根的容许误差,为的容许误差,N为迭代次数的容许值。如果或迭代次数

3、大于N,则算法失败,结束;否则执行。计算。若或N|abs(xl)eps) disp(Newton method failed); break; end d=xl-x0; x0=xl; if(abs(d)eps | abs(func1(xl)delta) break; end end其中函数体func1.func2为:function y = func1( x )y=x*x-exp(x);endfunction y = func2( x )y=2*x-exp(x);end程序输出结果:,分析:给定的初始值是1,根的容许误差为0.,的容许误差为10(-10),经过6次迭代得到满足根的容许误差的结果

4、。实习题3-2用LU分解法解方程组,其中, 算法:将方程组中的分解为,其中为单位下三角矩阵,为上三角矩阵,则方程组化为解2个方程组,具体算法如下:对计算 对计算 对a. 对计算 b.对 ,对计算 ,对计算 注:由于计算的公式与计算的公式形式上一样,故可直接对增广矩阵施行算法,此时的第列元素即为。Matlab程序如下:A=48,-24,0,-12;-24,24,12,12;0,6,20,2;-6,6,2,16;b=4;4;-2;-2;m,n=size(A);nb=n+1;Ab=A b;Ab(2:m,1)=Ab(2:m,1)/Ab(1,1);for k=2:m for j=k:nb Ab(k,j)

5、=Ab(k,j)-Ab(k,1:k-1)*Ab(1:k-1,j); end for i=k+1:m Ab(i,k)=(Ab(i,k)-Ab(i,1:k-1)*Ab(1:k-1,k)/Ab(k,k); endendx=zeros(n,1);x(n)=Ab(n,nb)/Ab(n,n);for k=n-1:-1:1 x(k)=(Ab(k,nb)-Ab(k,k+1:n)*x(k+1:n,1)/Ab(k,k);endfor k=1:n fprintf(x%d=%fn,k,x(k);end程序运行结果:x1=0.x2=1.x3=-0.x4=-0.实习题3-5(1)分别用雅克比迭代法与高斯赛德尔迭代法解下列

6、方程组:1. 雅克比迭代法算法:设方程组的系数矩阵的对角线元素,为迭代次数容许的最大值,为容许误差。取初始向量,令。对计算 如果,则输出,结束;否则执行。如果,则不收敛,终止程序;否则,转。Matlab程序如下:A=10,-1,2,0;0,8,-1,3;2,-1,10,0;-1,3,-1,11b=-11;-11;6;25eps=1e-6max=100n=length(A);x=zeros(n,1);x1=zeros(n,1);k=0;while(1) x1(1)=(b(1)-A(1,2:n)*x(2:n,1)/A(1,1); for i=2:n-1 x1(i)=(b(i)-A(i,1:i-1)

7、*x(1:i-1,1)-A(i,i+1:n)*x(i+1:n,1)/A(i,i); end x1(n)=(b(n)-A(n,1:n-1)*x(1:n-1,1)/A(n,n); k=k+1; if sum(abs(x1-x)=max fprintf(The ,Method is disconvergentn); break; end x=x1;endif kmax for i=1:n fprintf(x%d = %fn,i,x1(i); endend程序结果为:(初始设定迭代次数容许的最大值100,容许误差) 迭代次数为17x1 = -1.x2 = -2.x3 = 0.x4 = 2.2. 高斯赛

8、德尔迭代法算法:设方程组的系数矩阵的对角线元素为迭代次数容许的最大值,为容许误差。取初始向量,令。对计算 如果,则输出,结束;否则执行。如果,则不收敛,终止程序;否则,转。Matlab程序如下:A=10,-1,2,0;0,8,-1,3;2,-1,10,0;-1,3,-1,11b=-11;-11;6;25eps=1e-6max=100n=length(A);x=zeros(n,1);x1=zeros(n,1);k=0;while(1) x1(1)=(b(1)-A(1,2:n)*x(2:n,1)/A(1,1); for i=2:n-1 x1(i)=(b(i)-A(i,1:i-1)*x1(1:i-1

9、,1)-A(i,i+1:n)*x(i+1:n,1)/A(i,i); end x1(n)=(b(n)-A(n,1:n-1)*x1(1:n-1,1)/A(n,n); k=k+1; if sum(abs(x1-x)=max fprintf(The ,Method is disconvergentn); break; end x=x1;endif keps T1=T2; m=2*n+1; x=a:(b-a)/(2*n):b; s=sum(f(x(2:2:m-1); T2=1/2*(T1+h*s); n=n*2;h=h/2;endfprintf(T(%d)=%fn,n,T2);程序运行结果为:T(1024)=1.复化辛卜生算法:复化辛卜生公式为计算过程为:令对 。Matlab程序如下:a=0;b=pi/2;n=2;for i=1:3 x=a:(b-a)/(2*n):b; m=2*n+1; h=(b-a)/n; s=(h/6)*(f(a)+2*sum(f(x(3:2

温馨提示

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

评论

0/150

提交评论