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

下载本文档

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

文档简介

1、计算方法上机实验报告 班 级:XXXXXX 小组成员:XXXXXXX XXXXXXX XXXXXXXXXXXXXX 任课教师:XXX二一八年五月二十五日前言通过进行多次的上机实验,我们结合课本上的内容以及老师对我们的指导,能够较为熟练地掌握Newton迭代法、Jacobi迭代法、Gauss-Seidel 迭代法、Newton 插值法、Lagrange 插值法和Gauss 求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB程序的编写。以下为本次上机实验报告,按照实验内容共分为六部分。实验一:一、实验名称及题目: Newton迭代法 例2.7(P38):应用Newton迭代法求x

2、3-x-1=0在x=1附近的数值解xk,并使其满足|xk-xk-1|=tolx0=x1;y=subs(f,z,x0);y1=subs(f1,z,x0);x1=x0-y/y1;k=k+1;endx=double(x1)K四、运行结果:实验二:一、实验名称及题目:Jacobi迭代法例3.7(P74):试利用Jacobi迭代公式求解方程组5-1-1-1-110-1-1-1-15-1-1-1-110x1x2x3x4=-412834要求数值解X(k)满足|X-Xk|210-4,其中X=(1,2,3,4)T为方程组的精确解.2、 解题思路:首先将方程组中的系数矩阵分解成三部分,即:,为对角阵,为下三角矩阵

3、,为上三角矩阵。之后确定迭代格式,( , 即迭代次数),称为迭代矩阵。最后选取初始迭代向量,开始逐次迭代。最后验证精度。(迭代阵:。)雅克比迭代法的优点明显,计算公式简单,每迭代一次只需计算一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空间较大。三、Matlab程序代码:function jacobi(A,b,x0,eps,x1)D = diag(diag(A);%求A的对角矩阵L = -tril(A,-1);%求A的下三角矩阵U = -triu(A,1);%求A的上三角矩阵B = D(L+U);f = Db;x = B*x

4、0+f;n = 1;%迭代次数while norm(x-x1)=eps x = B*x+f; n = n+1;endformat longnxjingdu=norm(x-x1)四、运行结果:实验三:一、实验名称及题目:Gauss-Seidel 迭代法例3.8(P75):试利用Gauss-Seidel迭代公式求解方程组5-1-1-1-110-1-1-1-15-1-1-1-110x1x2x3x4=-412834,并使其数值解X(k)满足精度要求|X-Xk|210-4,其中X=(1,2,3,4)T为方程组的精确解.2、 解题思路:Gauss-Seidel迭代法与Jacobi迭代法思路相近,首先将方程

5、组中的系数矩阵分解成三部分,即:,为对角阵,为下三角矩阵,为上三角矩阵。之后确定迭代格式,( , 即迭代次数),称为迭代矩阵。最后选取初始迭代向量,开始逐次迭代。最后验证精度。(迭代阵:。)Gauss-Seidel迭代法与Jacobi迭代法相比速度更快,但不全如此。有例子表明:Gauss-Seidel迭代法收敛时,Jacobi迭代法可能不收敛;而Jacobi迭代法收敛时,Gauss-Seidel迭代法也可能不收敛。三、Matlab程序代码:function gauss_seidel(A,b,x0,eps,x1)D = diag(diag(A);%求A的对角矩阵L = -tril(A,-1);%

6、求A的下三角矩阵U = -triu(A,1);%求A的上三角矩阵B = (D-L)U;f = (D-L)b;x = B*x0+f;n = 1;%迭代次数while norm(x1-x)=eps x = B*x+f; n = n+1;endformat longnxjingdu=norm(x1-x)四、运行结果:实验四:一、实验名称及题目: Lagrange 插值法 例4.1(P88):给定函数fx=x(1+cosx)及插值节点x0=0, x1+8, x2=4, x3=38, x4=2.试构造Lagrange插值多项式,给出其误差估计,并由此计算f316及其误差.2、 解题思路:一般来说,如果我

7、们有个点,各互不相同。那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:,其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:。三、Matlab程序代码:function y=lagrange(x0,x)n=length(x0);%向量长度s=0;for k=1:n%k从1到n的循环 p=1.0; for j=1:n if j=k%“=”不等于的意思 p=p*(x-x0(j)/(x0(k)-x0(j); end end y0=x0(k)*(1+cos(x0(k); s=p*y0+s;endformat longswucha=abs(x*(1+cos(x)-s)四、运行结果:五、La

8、grange插值图像绘制%Lagrange插值图像算法x=linspace(0,1002,200);s=linspace(0,1000,200);x0=0;pi/8;pi/4;3*pi/8;pi/2;n=length(x0);s=0;for k=1:n p=1.0; for j=1:n if j=k p=p.*(x-x0(j)/(x0(k)-x0(j); end end y0=x0(k)*(1+cos(x0(k); s=p*y0+s;endplot(x,s,r);grid on;title(Lagrange)xlabel(X),ylabel(Y);axis normal;实验五:一、实验名称及

9、题目:Newton 插值法 例4.3(P96):已知fx=1+ch2x,试取插值节点x0=0.35, x1=0.50, x2=0.65, x3=0.80, x4=0.95,构造4次Newton插值多项式,由此计算f0.7的逼近值,并指出其绝对误差.2、 解题思路:将拉格朗日插值公式中的改写成:,其中,为待定定系数。又,,。将带入可得:。三、Matlab程序代码:function newton_interpolation(x0,x)format longn=length(x0);syms zf=sqrt(1+cosh(z)2);a(1)=subs(f,z,x0(1);for k=1:n-1 y0

10、=subs(f,z,x0(k); y1=subs(f,z,x0(k+1); d(k,1)=(y1-y0)/(x0(k+1)-x0(k);%一阶差商endfor j=2:n-1 for k=1:n-j d(k,j)=(d(k+1,j-1)-d(k,j-1)/(x0(k+j)-x0(k);%二阶差商及以上 endenddouble(d)for j=2:n a(j)=d(1,j-1);endb(1)=1;c(1)=a(1);for j=2:n b(j)=(x-x0(j-1).*b(j-1); c(j)=a(j).*b(j);endnp=double(sum(c)wucha=double(abs(np

11、-subs(f,z,x)四、运行结果:五、Newton插值图像绘制实验六:一、实验名称及题目: Gauss 求积公式 例5.7(P140):试构造Gauss型求积公式-11f(x)dxA0fx0+A1fx1+A2fx2,并由此计算积分01t(1+t)2dt.2、 解题思路:设高斯-勒让德求积公式是:,依次代入,解得。利用换元公式变换原式的积分上下限,在套用高斯-勒让德求积公式求得积分。三、Matlab程序代码:function gauss(a,b)syms tf=sqrt(t)/(1+t)2;P=-sqrt(3/5) 0 sqrt(3/5); A=5/9 8/9 5/9; s=0;for i=1:3; x=P(i); y=subs(f,t,(b-a)*x/2+(a+b)/2); s=s+A(i)*y;endformat longS=double(a-b)/2*s)四、运行结果:结束语在本学期的计算方法课程

温馨提示

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

评论

0/150

提交评论