数值分析— 线性方程组的数值解法
- 格式:doc
- 大小:275.50 KB
- 文档页数:7
实验名称: 实验五 线性方程组的数值解法 指导教师: 数值分析实验组
实验时数: 2 实验设备:安装了Matlab 、C ++、VF 软件的计算机
实验日期:2014年 月 日 实验地点: 第五教学楼北802或902 实验目的:
1. 掌握线性方程组的迭代法和直接法的基本思想和基本步骤。
2. 理解各类数值解法的优缺点,并能自行编程求解。
3. 认识迭代法收敛的含义以及迭代法初值和方程组系数矩阵性质对收敛速度的影响,了解求解病态线性方程组的方法。
实验准备:
1. 在开始本实验之前,请回顾教科书的相关内容;
2. 需要一台准备安装Windows XP Professional 操作系统和装有数学软件的计算机。
实验内容及要求
A 题 考虑方程组b Hx =的求解,其中系数矩阵H 为Hilbert 阵,
n j i j i h h H j i n n j i ,,2,1,,1
1
,)(,, =-+=
=⨯
这是一个著名的病态问题。通过首先给定解(例如取各个分量均为1)再计算出右端的办法给出确定的问题。
(1) 选择问题的维数为6,分别用列主元Gauss 消去法、Jacobi 迭代法、Gauss-Seidel 迭代法和SOR 迭代法求解方程组,其各自的结果如何?将计算结果与问题的解比较,结论如何?
(2) 逐步增大问题的维数,仍然用上述方法来解它们,计算的结果如何?计算的结果说明了什么?分析产生结果的原因。
说明:实验过程应包括对问题的简要分析、求解方法、求解步骤、程序及其必要的图表等内容。
实验过程:
本实验所选题为A 题
实验分析:b Hx =,H 矩阵可由Matlab 直接给出,为了设定参考解,首先设x 为分量全
为1的向量,求出b ,然后将H 和b 作为已知量,求x ,与设定的参考解对比。
对于列主元Gauss 消去法,Jacobi 迭代,Gauss-Seidel 迭代,SOR 迭代法,去迭取迭代初值
0x 为0向量,迭代精度eps=1.0*e (-6),迭代你次数<100000,SOR 迭代中 1.2w 和0.8分
别计算。 实验程序如下:
条件数
从以上实验数据可以得到:Gauss_lie消去法得到的解与实际值相同,J迭代法得到的解与实际值相差甚远,说明迭代是发散的或者没有意义的,Gauss-Seidel迭代法得到的解与实际值有一些误差,但是可以接受,SOR迭代法w=1.2与w=0.8得到的解与实际值误差可以接受,但是w=1.2比w=0.8得到的解迭代的次数更少。
取不同的n值,得到如下结果:
对于Guass_lie法,可以看出来,随着n的增大,求解结果误差变大,这是因为随着n增大,系数矩阵的条件数变大,微小的扰动就容易造成很大的误差,最后得不到精确解。
对于Jacobi迭代,计算结果为Inf和NaN,说明是发散的或者是没有意义的。
对于Gauss-Seidel迭代和SOR迭代,结果是收敛的,但是可以看出迭代次数比较多,并且对于不同维数Gauss-Seidel迭代和SOR收敛速度不一样,有时候GS快,有时SOR快。
对SOR取不同的w迭代速度也不一样,存在一个最优的松弛因子w,并且可以知道,迭代次数多少跟初值x0也有关系。
实验总结(由学生填写):通过本次实验,我不仅对高斯列主元法求解、雅克比迭代、高斯赛德尔、超松弛迭代的算法更加熟悉,同时也了解到了病态方程组可以通过条件数辨别,学习到了很多。感到数值分析真的是一门强大的学科。