广东工业大学数值计算试卷及答案探究.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数值计算引论 学 院 机电工程学院 专 业 机械设计制造及其自动化 年级班别 2014级(6)班 学 号 3114000271 学生姓名 刘就杰 2016年 11 月 一 编写雅可比迭代法求解线性方程组的程序,要求附有算例(20分)。 (可能的算例包括基本的验证性算例、方程系数随机生成的一般算例、用于算法对比的比较性算例等,对各算例的结果进行分析。) 雅可比迭代法的matlab程序如下 function x=Jacobi(A,b,x0,tol) %雅可比迭代法解线性方程组 %A为系数矩阵,b为右端项,x0为初始向量,tol为误差精度 sprintf(USAGE:Jacobi(A,b,x0,tol)) D=diag(diag(A));%diag(x) 返回由向量x的元素构成的对角矩阵 U=triu(A,1);%triu(A)提取矩阵A的上三角部分生成上三角矩阵 L=tril(A,-1);%tril(A)提取矩阵A的下三角部分生成下三角矩阵 B=-D\(L+U);%B为迭代矩阵 dl=D\b; x=B*x0+dl; n=1; while norm(x-x0)=tol x0=x; x=B*x0+dl; n=n+1; end n %n为迭代次数 高斯-赛德尔迭代法的matlab程序如下: function x=Guass_seidel(A,b,x0,tol) %高斯-赛德尔迭代法解线性方程组 %A为系数矩阵,b为右端项,x0为初始向量,tol为误差精度 sprintf(USAGE:Guass_seidel(A,b,x0,tol)) D=diag(diag(A));%diag(x) 返回由向量x的元素构成的对角矩阵 U=triu(A,1);%triu(A)提取矩阵A的上三角部分生成上三角矩阵 L=tril(A,-1);%tril(A)提取矩阵A的下三角部分生成下三角矩阵 G=-(D+L)\U;%G为迭代矩阵 dl=(D+L)\b; x=G*x0+dl; n=1; while norm(x-x0)=tol x0=x; x=G*x0+dl; n=n+1; end n %n为迭代次数 调用编好的程序求解方程组: A=[5 -1 -1 -1 ;-1 10 -1 -1;-1 -1 5 -1;-1 -1 -1 10]; b=[-4;12;8;34]; x0=[0;0;0;0]; tol=1e-6; x=Jacobi(A,b,x0,tol) x=Guass_seidel(A,b,x0,tol) 实验结果如下: ans = USAGE:Jacobi(A,b,x0,tol) n = 20 x = 1.0000 2.0000 3.0000 4.0000 ans = USAGE:Guass_seidel(A,b,x0,t) n = 12 x = 1.0000 2.0000 3.0000 4.0000 取相同的初始值达到同样的精度10-6,雅可比迭代需要迭代20次,而高斯-赛德尔迭代法只需12次。 实验总结:通过这次实验,对雅可比迭代法以及高斯-赛德尔迭代法求解线性方程组的基本原理有了进一步的理解,同时了解了雅可比和高斯-赛德尔迭代法的优点,即雅可比和高斯-赛德尔在求解线性方程组的过程中具有更快的收敛速度,而高斯-赛德尔比雅可比的收敛速度更快(即取相同的初始值,达到同样精度所需的迭代次数较少)。 二 编写分段二次拉格朗日插值的程序,要求附有算例(20分)。 (对 在节点0,0.2,0.4,0.6,0.8,1.0上进行插值,求x=0.7处的值,绘出被插值函数与插值函数的图形,予以对比。) 建立如下拉格朗日插值函数: 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(

文档评论(0)

1112111 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档