- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)