微分方程数值解法实验报告.docVIP

  1. 1、本文档共22页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
微分方程数值解法实验报告 姓名: 班级: 学号: 一:问题描述 求解边值问题: 其精确解为 问题一:取步长h=k=1/64,1/128,作五点差分格式,用Jacobi迭代法,Gauss_Seidel迭代法,SOR 迭代法(w=1.45)。求解差分方程,以前后两次重合到小数点后四位的迭代值作为解的近似值,比较三种解法的迭代次数以及差分解与精确解的精度。 问题二:取步长h=k=1/64,1/128,作五点差分格式,用单参数和双参数PR法解差分方程,近似到小数点后四位。与SOR法比较精度和迭代步数。 问题三:取步长h=k=1/64,1/128,作五点差分格式,用共轭梯度法和预处理共轭梯度法解差分方程,近似到小数点后四位。与SOR法与PR法比较精度和迭代步数。 二.实验目的: 分别使用五点差分法(Jacobi迭代,Gauss_Seidel迭代,SOR迭代),PR交替隐式差分法(单参数,双参数),共轭梯度法,预共轭梯度法分别求椭圆方程的数值解。 三.实验原理: (1) Jacobi迭代法 设线性方程组 (1) 的系数矩阵A可逆且主对角元素均不为零,令 并将A分解成 (2) 从而(1)可写成 令 其中. (3) 以为迭代矩阵的迭代法(公式) (4) 称为雅可比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为 (5) 其中为初始向量. (2) Guass-Seidel迭代法 由雅可比迭代公式可知,在迭代的每一步计算过程中是用的全部分量来计算的所有分量,显然在计算第i个分量时,已经计算出的最新分量没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第次近似的分量加以利用,就得到所谓解方程组的高斯—塞德(Gauss-Seidel)迭代法. 把矩阵A分解成 (6) 其中,分别为的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 即 其中 (7) 以为迭代矩阵构成的迭代法(公式) (8) 称为高斯—塞德尔迭代法(公式),用 量表示的形式为 (3) SOR迭代 (4) 交替方向迭代法(PR法) 迭代格式为: 对于单参数PR法, 对于多参数, (5) 共轭梯度法 算法步骤如下: [预置步]任意 ,计算,并令取:指定算法终止常数,置,进入主步; [主步] (1)如果,终止算法,输出;否则下行; (2)计算: (3)计算: (4)置,转入(1). (6) 预共轭梯度法 [预置步] 任意,计算,并令取:指定算法终止常数,置,进入主步; [主步] (1)计算:, (2)如果,转入(3).否则,终止算法,输出计算结果 (3)计算: (4)置,转入(1) 注:在算法[主步]中,引入变量 ,及,可以简化计算。 四.程序设计(MATLAB实现) Jacobi迭代法 function[u_1,m_1]=Jacobi_Solve(A,b,n,err) D=diag(A); D=diag(D); L=-tril(A,-1); R=-triu(A,1); B=D\(L+R); g=(D\b); m_1=0; u_1_0=zeros(n-1,n-1);%初始迭代值 u_1_0=u_1_0(:); flag=1; while flag u_1=B*u_1_0+g; if norm(u_1-u_1_0,inf)err flag=0; end u_1_0=u_1; m_1=m_1+1;%迭代次数值 end uu=zeros(n+1); for mm=1:n-1 for nn=1:n-1 uu(nn+1,mm+1)=u_1((mm-1)*(n-1)+nn,1); end end %Jacobi迭代差分解图像 x=[0:1/n:1]; y=[0:1/n:1]; figure(2) mesh(x,y,uu);title(Jacobi迭代差分解图像) Gauss_Seidel迭代法 function[u_2,m_2]=Gauss_Seidel_Solve(

文档评论(0)

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

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

1亿VIP精品文档

相关文档