两点边值问题的不同迭代法比较及matlab实现.docVIP

两点边值问题的不同迭代法比较及matlab实现.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
两点边值问题的不同迭代法比较及matlab实现

两点边值问题的不同迭代法比较及matlab实现 问题:考虑两点边值问题: 容易知道它的精确解为: 为了将微分方程离散,把[0,1]区间n等分,令h=1/n,,得到差分方程 ,从而得到迭代方程组的系数矩阵A。 对=1,a=1/2,n=100,分别用jacobi,G-S,超松弛迭代法分别求线性方程组的解,要求4位有效数字,然后比较与精确解的误差。 对=0.1,=0.01,=0.001,考虑同样问题。 思想: 利用书上的迭代公式即可。 注意问题: 迭代矩阵是n-1阶的,不是n阶; 等号右端向量b的最后一项,不是ah^2,而是ah^2-eps-h 精确解: 带入a=1/2,=1 代码: clear x=linspace(0,1); truy=(1-0.5)/(1-exp(-1/1))*(1-exp(-x./1))+x.*0.5; figure; plot(x,truy,g,LineWidth,1.5); hold on; Grid 图: 三种方法的实现 Jacobi法:代码见附录 Eps=1 结果: 迭代次数k:22273 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) Eps=0.1 结果: 迭代次数k:8753 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) Eps=0.01 结果: 迭代次数k:661 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) G-S迭代法:代码见附录 Eps=1 结果: 迭代次数k:11125 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) Eps=0.1 结果: 迭代次数k:4394 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) Eps=0.01 结果: 迭代次数k:379 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) 超松弛法:代码见附录 Eps=1 w=1.56 结果: 迭代次数k:3503 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) Eps=0.1 w=1.56 结果: 迭代次数k:1369 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) Eps=0.01 w=1.56 结果: 迭代次数k:131 结果与精确解的比较图(绿色粗线是精确解,黑色细线是迭代结果) 结果: Jacobi、G-S、超松弛法,三者都能够取得对精确解的良好逼近,但是,在相同的精度条件下,三者的收敛速度是不一样的,jacobiG-S超松弛,也就是说,在迭代次数相同的条件下,精度:jacobiG-S超松弛。 代码附录: Jacobi: function [y,k]=jacobi2(a,eps,h,delta) n=1.0/h; A=ones(n-1); y=zeros(n-1,1); z=zeros(n-1,1); k=0; for i=1:n-1 for j=1:n-1 A(i,j)=0; end end for i=1:n-1 A(i,i)=-(2*eps+h); end for i=1:n-1 for j=1:n-1 if i==j+1 A(i,j)=eps; end if i==j-1 A(i,j)=eps+h; end end end b=zeros(n-1,1); for i=1:n-2 b(i,1)=a*h^2; end b(n-1,1)=a*h^2-eps-h; D=zeros(n-1); for i=1:n-1 D(i,i)=A(i,i); end L=zeros(n-1); for i=1:n-1 for j=1:n-1 if ij L(i,j)=-A(i,j); end end end U=zeros(n-1); for i=1:n-1 for j=1:n-1 if ij U(i,j)=-A(i,j); end end end B=D\(L+U); g=D\b; while 1 z=B*y+g; if norm(z-y,inf)delta break; end y=z;k=k+1; end x=linspace(0,1); truy=(1-a)/(1-exp(-1/eps))*(1-exp(-x./eps))+x.*a; figure; plot(100*x,truy,g,LineWidth,5); hold on; grid hold on;

文档评论(0)

zhengshumian + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档