数值分析大作业.pdf

上传人:ylj18****41534 文档编号:72020686 上传时间:2023-02-08 格式:PDF 页数:10 大小:238.99KB
返回 下载 相关 举报
数值分析大作业.pdf_第1页
第1页 / 共10页
数值分析大作业.pdf_第2页
第2页 / 共10页
点击查看更多>>
资源描述

《数值分析大作业.pdf》由会员分享,可在线阅读,更多相关《数值分析大作业.pdf(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、百度文库-好好学习,天天向上数值分析大作业-1学号:*专业:机械工程学生姓名:*年 10 月 2014百度文库-好好学习,天天向上摘要:摘要:在自然科学与工程技术中,很多问题的解决常常归结为求解线性方程组 Ax=b。随着计算机的发展,利用计算机这个强有力的计算工具去求解线性方程组是一个非常实用的问题。在求解大型线性方程组时,直接法在多次消元,回代的过程中,四则运算的误差累计与传播无法控制,致使计算结果的精度就无法保证,特别是求解大型稀松矩阵时,还要对系数矩阵进行分解。而迭代法相对于直接法而言,具有保持迭代矩阵不变的特点,计算程序一般也比较简单,且对于许多问题收敛速度比较快。比较常用的迭代法有雅

2、克比迭代法、高斯一塞德尔迭代法和逐次超松弛迭代法等,本次研究目的是通过求解一个线性方程组来比较它们的迭代效果,验证一些已有的结论。1 1数学原理数学原理1.11.1 雅可比迭代法雅可比迭代法将线性方程组的系数矩A(aij)Rnn分解为 A=D+L+U,其中 D 是由 A 的主对角元素构成的对角矩阵,L 是由 A 的严格下三角部分构成的严格下三角矩阵,U 是由 A 的严格上三角部分构成的严格上三角矩阵,即a11D a22,annL 0a21a31an10a32an20an,n1 0,U 0a120a13a230a1na2n.an1,n0若系数矩阵 A 的对角元素aii 0(i 1,2,n),则矩

3、阵 D 非奇异,取 M=D,N=-(L+U),则x D1(LU)x D1b GJx gJ,因而,构造的迭代法为:-2百度文库-好好学习,天天向上x(k1)GJx(k)gJ,GJ D(LU),gJ D b.1.21.2 高斯高斯-赛得尔迭代法赛得尔迭代法11将线性方程组的系数矩A(aij)Rnn分解为 A=D+L+U。若系数矩阵 A 的对角元素不等于 0,则矩阵 D 非奇异,取 M=L+D,N=-U,则x L DUxL Db GGx gG11因而,构造的迭代法为:x(k1)GGx(k)gG,GG L DU,gGL Db.111.31.3 逐次超松弛迭代法逐次超松弛迭代法线性方程组的系数矩A(ai

4、j)Rnn分解为 A=D+L+U。取M 1DL,N 11D U,则1x DL1DUxDL1b GSx gS因而,构造的迭代法为:x(k1)GSx(k)gS,GGD L11D U,gSD Lb.12.2.程序设计程序设计2.12.1 雅可比迭代法求解雅可比迭代法求解雅可比迭代法 MATLAB程序如下:%majacobi.mfunction x=majacobi(A,b,x0,ep,N)%用途:用 Jacobi 迭代法解线性方程组 Ax=b%格式;x=majacobi(A,b,x0,ep,N)A为系数矩阵,b 为右端向量,%x0 为初始向量(默认零向量),ep 为精度(默认 1e-6),%N 为最

5、大迭代次数(默认 500 次),x 返回近似解向量-3百度文库-好好学习,天天向上n=length(b);if nargin5,N=500;endif nargin4,ep=1e-6;endif nargin3,x0=zeros(n,1);endx=zeros(n,1);k=0;while kNfor i=1:nx(i)=(b(i)-A(i,1:i-1,i+1:n)*x0(1:i-1,i+1:n)/A(i,i);endif norm(x-x0,inf)edit majacobi A=10.9,1.2,2.1,0.9;1.2,11.2,1.5,2.5;2.1,1.5,9.8,1.3;0.9,2.

6、5,1.3,12.3A=10.90001.20002.10000.90001.200011.20001.50002.50002.10001.50009.80001.30000.90002.50001.300012.3000 b=-7.0,5.3,10.3,24.6;x=majacobi(A,b)k=17-4百度文库-好好学习,天天向上x=-0.99860.00711.00321.96562.22.2 高斯高斯-赛得尔迭代法求解赛得尔迭代法求解高斯-赛得尔迭代法 MATLAB程序如下:%maseidel.mfunction x=maseidel(A,b,x0,ep,N)%用途:用 Gauss-S

7、eidel 迭代法解线性方程组 Ax=b%格式:x=maseidel(A,b,x0,ep,N)A为系数矩阵,b 为右端向量,%x0 为初始向量(默认零向量),ep 为精度(默认 1e-6),%N 为最大迭代次数(默认 500 次),x 返回近似解向量n=length(b);if nargin5,N=500;endif nargin4,ep=1e-6;endif nargin3,x0=zeros(n,1);endx=zeros(n,1);k=0;while kNfor i=1:nif i=1x(1)=(b(1)-A(1,2:n)*x0(2:n)/A(1,1);else if i=nx(n)=(b

8、(n)-A(n,1:n-1)*x(1:n-1)/A(n,n);else-5百度文库-好好学习,天天向上x(i)=(b(i)-A(i,1:i-1)*x(1:i-1)-A(i,i+1:n)*x0(i+1:n)/A(i,i);endendendif norm(x-x0,inf)edit maseidel A=10.9,1.2,2.1,0.9;1.2,11.2,1.5,2.5;2.1,1.5,9.8,1.3;0.9,2.5,1.3,12.3A=10.90001.20002.10000.90001.200011.20001.50002.50002.10001.50009.80001.30000.9000

9、2.50001.300012.3000 b=-7.0,5.3,10.3,24.6;x=maseidel(A,b)k=7x=-0.99860.00711.0032-6百度文库-好好学习,天天向上1.96562.32.3 逐次超松弛迭代法求解逐次超松弛迭代法求解逐次超松弛迭代法 MATLAB程序如下:%masor.mfunction x=masor(A,b,omega,x0,ep,N)%用途:用 SOR 迭代法解线性方程组 Ax=b%格式:x=maseidel(A,b,x0,ep,N)A为系数矩阵,b 为右端向量,%omega 为松弛因子(默认 1.5),x0 为初始向量(默认零向量),ep 为精

10、度(默认 1e-6),%N 为最大迭代次数(默认 500 次),x 返回近似解向量n=length(b);if nargin6,N=500;endif nargin5,ep=1e-6;endif nargin4,x0=zeros(n,1);endif nargin3,omega=1.5;endx=zeros(n,1);k=0;while kNfor i=1:nif i=1x1(1)=(b(1)-A(1,2:n)*x0(2:n)/A(1,1);else if i=nx1(n)=(b(n)-A(n,1:n-1)*x(1:n-1)/A(n,n);elsex1(i)=(b(i)-A(i,1:i-1)*

11、x(1:i-1)-A(i,i+1:n)*x0(i+1:n)/A(i,i);endendx(i)=(1-omega)*x0(i)+omega*x1(i);-7百度文库-好好学习,天天向上endif norm(x0-x,inf)edit masor A=10.9,1.2,2.1,0.9;1.2,11.2,1.5,2.5;2.1,1.5,9.8,1.3;0.9,2.5,1.3,12.3A=10.90001.20002.10000.90001.200011.20001.50002.50002.10001.50009.80001.30000.90002.50001.300012.3000 b=-7.0,

12、5.3,10.3,24.6;x=masor(A,b,0.4)k=33x=-0.99860.00711.00321.9656取其它的松弛因子得:取松弛因子为 0.8 x=masor(A,b,0.8)得到 k=12;x=-0.9986,0.0071,-8百度文库-好好学习,天天向上1.0032,1.9656。取松弛因子为 1.2 x=masor(A,b,1.2)得到 k=11;x=-0.9986,0.0071,1.0032,1.9656。取松弛因子为 1.6 x=masor(A,b,1.6)得到 k=33;x=-0.9986,0.0071,1.0032,1.9656。三结果分析和讨论三结果分析和讨

13、论由程序解得的结果可知:雅可比迭代法在第17 次迭代达到收敛,高斯-塞德尔迭代法在第 7 次迭代达到收敛。从此例可以看出,高斯-塞德尔迭代法比雅可比迭代法收敛速度快(达到同样的精度所需迭代次数少)。由雅可比迭代公式可知,在迭代的每一步计算过程中使用的是旧的分量来计算,没有用到迭代出的新的分量。从直观上看,最新计算出的分量可能比旧的分量接近真实值,要更好一些。而高斯-赛德尔迭代法就在计算过程中加入了新值的因素,在每次迭代时将前面所得到的新值迅速地被利用到计算下一个值上,从而可以减少计算的次数,节约时间。由本次计算和迭代公式可以得出,高斯-赛德尔迭代法在收敛速度上要优于雅可比迭代法。而迭代序列的收

14、敛取决于迭代矩阵的谱半径,而与初值向量的选取无关。因为在求解同一个方程组时,雅可比迭代法和高斯-赛德尔迭代法的谱半径不一定相同,而且并无包含关系,因此,有时雅可比迭代法收敛,而高斯-赛德尔不收敛。当然,也有雅可比迭代法不收敛,而高斯-赛德尔迭代法收敛的情形。从超松弛迭代法的结果来看,松弛因子分别取 0.4,0.8,1.2,1.6 时,达到最终精度要求的迭代次数分别为 33,12,11,33。由此可见,超松弛迭代法中松弛因子的选择很重要。如果选择合适的松弛因子,会使迭代法的收敛速度大大提高。四四.实验心得体会实验心得体会对于线性方程组的迭代法求根,有多种迭代方法,选取合适的迭代方程和初值,有利于提高迭代方程的迭代速度,减少计算量,较快的得到理想的答案。通过这次研究,我学会了使用雅可比迭代法,高斯-赛德尔迭代和逐次超松弛迭代-9百度文库-好好学习,天天向上法的编程来求解线性方程组,巩固了程序设计算法的编写,而且对这几种迭代方法的计算选取有了更深刻的理解,受益匪浅。-10

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁