预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共22页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

数学与计算科学学院 《数值分析》课程设计 题目:迭代法解线性方程组 专业:信息与计算科学 学号:1309302-24 姓名:谭孜 指导教师:郭兵 成绩: 二零一六年六月二十日 一、前言:(目的和意义) 1.实验目的 ①掌握用迭代法求解线性方程组的基本思想和步骤。 ②了解雅可比迭代法,高斯-赛德尔法和松弛法在求解方程组过程中的优缺点。 2.实验意义 迭代法是用某种极限过程去逐步逼近线性方程组精确解的方法,它是解高阶稀疏方程组的重要方法。迭代法的基本思想是用逐次逼近的方法求解线性方程组。比较雅可比迭代法,高斯-赛德尔迭代方法和松弛法,举例子说明每种方法的试用范围和优缺点并进行比较。 二、数学原理: 设有方程组 …① 将其转化为等价的,便于迭代的形式 …② (这种转化总能实现,如令), 并由此构造迭代公式 …③ 式中B称为迭代矩阵,f称为迭代向量。对任意的初始向量,由式③可求得向量序列,若,则就是方程①或方程②的解。此时迭代公式②是收敛的,否则称为发散的。构造的迭代公式③是否收敛,取决于迭代矩阵B的性 1.雅可比迭代法基本原理 设有方程组 …① 矩阵形式为,设系数矩阵A为非奇异矩阵,且 从式①中第i个方程中解出x,得其等价形式 …② 取初始向量,对式②应用迭代法,可建立相应的迭代公式: …③ 也可记为矩阵形式: …④ 若将系数矩阵A分解为A=D-L-U, 式中 , , 。 则方程Ax=b变为 得 于是 于是式中④中的。 式③和式④分别称为雅克比迭代法的分量形式和矩阵形式,分量形式用于编程计算,矩阵型式用于讨论迭代法的收敛性。 2.高斯—赛德尔迭代法 高斯—赛德尔(Gauss-Seidel)迭代法,其迭代公式为 (i=1,2,…,n) 也可以写成矩阵形式 仍将系数矩阵A分解为 则方程组变为 得 将最新分量代替为旧分量,得 即 于是有 所以 3.超松弛迭代法 设已知第k次迭代向量,及第k+1次迭代向量的前i-1个分量,(j=1,2,…i-1),现在研究如何求向量的第i个分量。 首先,有高斯—赛德尔迭代法求出一个值,记为 (i=1,2,…n) 再将第k次迭代向量的第i个分量与进行加权平均, 得,即: 于是的SOR迭代公式 (i=1,2,…n)…① 或 (i=1,2,…n)…② 当=1时,式①即为高斯—赛德尔迭代法; 当0<<1时,式①称为低松弛方法,当某些方程组用高斯—赛德尔迭代法不收敛时,可以用低松弛方法获得收敛; 当>1时,式①称为超松弛方法,可以用来提高收敛速度。 将式②写成矩阵的形式,得: 即 于是得SOR迭代的矩阵表示 式中 举例说明及代码 例1:解下面方程组.(雅克比迭代方法、高斯-赛德尔和松弛法的比较) 解:先计算迭代矩阵: BJ与BG的特征值跟收敛半径为 所以,用雅可比迭代法求解,迭代过程收敛,而用高斯-塞德尔迭代法求解,迭代过程发散。 取x0=(0;0;0),为达到精度10-5,取w=0.1。 雅可比迭代法松弛法3184代码: 雅可比迭代法 function[x,k]=jacobi(A,b,x0,esp)%k为迭 A=input('InputA='); b=input('Inputb='); x0=input('Inputx0='); esp=1.0e-5; k=0; n=length(b); x=x0; whilemax(abs(b-A*x0))>esp&k<=500;fori=1:n sum=0; forj=1:n ifj~=i sum=sum+A(i,j)*x0(j);end end x(i)=(b(i)-sum)/A(i,i);end x0=x; k=k+1; ifk>500 fprintf('迭代达到上限') return end end k InputA=[12-2;111;221]; Inputb=[111]'; Inputx0=[000]' 运行结果: k= 3 ans= -3 3 1 2.高斯-赛德尔迭代法 clear;clc; A=[12-2;111;221]; b=[111]'; N=length(b);%解向量的维数 fprintf('库函数计算结果:'); x=inv(A)*b%库函数计算结果 x=zeros(N,1);%迭代初始值 %-----(A=D-E-F)------ D=diag(diag(A)); E=-tril(A,-1);%下三角 F=-triu(A,1);%上三角 B=inv(D-E)*F;g=inv(D-E)*b; eps=0.0001;%相邻解的距离小于该数时,结束迭代 %--------开始迭代------- fork=1:1000%最大迭代次数为100 fprintf('第%d次迭代:',k); y=B*