数值分析课程实习报告-迭代法求取线性方程组的近似解.doc

数值分析课程实习报告-迭代法求取线性方程组的近似解.doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
课程实习报告 课程名称: 数值分析课程实习 实习题目: 利用Matlab软件编程运用迭代法求取线性方程组的近似解 姓 名: 系: 专 业: 年 级: 学 号: 指导教师: 职 称: 年 月 日 课程实习报告评分表 序号 项目 评分权值 评定成绩 1 算法:正确,步骤合理 0.3 2 程序:画流程图,用语言或数学软件编写 0.2 3 质量:分析处理科学;文字通顺;计算及测试结果准确; 0.4 4 工作量、工作态度:按期完成规定的任务,工作量饱满;工作努力,遵守纪律 0.1 合 计 1 指导教师签名: 年 月 日 目 录 1. 实习的目的和任务 1 2. 实习要求 1 3. 实习地点 1 4. 主要仪器设备 1 5. 实习内容 1 5.1 算法思想 1 5.2 实习步骤 3 5.3 流程图 3 5.4 MATLAB程序 5 5.5 实例分析 8 5.6 结果分析 32 6.总结 35 参考文献 36 数值分析课程实习 实习的目的和任务 目的:熟练运用MATLAB数学软件,了解数值计算方法及其应用,提高计算的效率和计算的精度,针对题目编制程序,通过课程实习达到能够应用软件解决实际问题。 任务:编写运用迭代法解线性方程组的近似解的程序,用Jacobi迭代法、Gauss- Seidel迭代法、逐次超松弛迭代法研究数值问题。掌握Jacobi迭代法、Gauss- Seidel迭代法、逐次超松弛迭代法的格式,以及掌握迭代收敛性及收敛性及5.1 算法思想 根据方程组设计出一个迭代公式,然后将任意选取的一初始向量代入迭代公式,求出,再以代入同一迭代公式,求出,如此反复进行,得到向量序列。当收敛时,其极限即为原方程组的解。 设方程组:,记作。 5.1.1 Jacobi迭代法 迭代公式:,其中为第次迭代向量,为下一次迭代向量。 迭代矩阵:其中,。且 5.1.2 Gauss- Seidel迭代法 迭代公式: 迭代矩阵:,其中,。 5.1.3 逐次超松弛迭代法 迭代公式:其中为松弛因子。当时,迭代法就转化为迭代法。 迭代矩阵:。其中,。 三个迭代法中矩阵为: ,, 5.2 实习步骤 1、先对Jacobi迭代法、Gauss- Seidel迭代法、逐次超松弛迭代法这三种迭代法进行MATLAB代码编写,并对三个代码绘制模块图。 2、根据实例中的系数矩阵A和右端矩阵b,给定迭代误差为1e-5,用Jacobi迭代法、Gauss- Seidel迭代法和逐次超松弛迭代法进行计算。而逐次超松弛迭代法要在5个不同的松弛因子下进行计算,迭代误差也为1e-5。 3、分析结果,对Jacobi迭代法、Gauss- Seidel迭代法的结果进行比较收敛性和收敛速度,并且比较一下逐次超松弛迭代法在10个不同的松弛因子下进行计算的结果情况,分析计算结果并给出结论,并对三种迭代法进行评价。 5.3 流程图 5.3.1 Jacobi迭代法流程图 5.3.2 Gauss- Seidel迭代法流程图 5.3.3 逐次超松弛迭代法流程图 5.4 MATLAB程序 5.4.1 Jacobi迭代法MATLAB编程 % jacobi 迭代法 计算线性方程组 % tol 为输入误差容限,x0为迭代初值 function [x,k]=Fjacobi(A,b,x0,tol) D=diag(diag(A)); %求A的对角阵 L=-tril(A,-1); %求A的下三角阵 U=-triu(A,1); %求A的上三角阵 B=D\(L+U); f=D\b; x=B*x0+f; %迭代公式 k=0; %迭代次数 [v,d]=eig(B); C=diag(d); format long if sum(abs(C)=1)0 disp(谱半径大于1,迭代方程不收敛); return; else while norm(x-x0)=tol x0=x; x=B*x0+f; k=k+1; str=strcat([第 num2str(k) 次迭代后的值: ]); disp(str); disp(x); end str1=strcat(在误差容许范围内,近似解为:); disp(str1); end 5.4.2 Gauss- Seidel迭

文档评论(0)

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

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

1亿VIP精品文档

相关文档