3.2Jacobi迭代法和Gauss-Seidel迭代法
- 格式:ppt
- 大小:4.34 MB
- 文档页数:26
Jacobi 迭代法与Gauss-Seidel迭代法算法比较目录1 引言 (1)1.1Jacobi迭代法 (2)1.2Gauss-Seidel迭代法 (2)1.3逐次超松弛(SOR)迭代法 (3)2算法分析 (3)3 结论 (5)4 附录程序 (5)参考文献 (8)Jacobi 迭代法与Gauss-Seidel 迭代法比较1 引言解线性方程组的方法分为直接法和迭代法,直接法是在没有舍入误差的假设下,能在预定的运算次数内求得精确解,而迭代法是构造一定的递推格式,产生逼近精确值的序列。
这两种方法各有优缺点,直接法普遍适用,但要求计算机有较大的存储量,迭代法要求的存储量较小,但必须在收敛性得以保证的情况下才能使用。
对于高阶方程组,如一些偏微分方程数值求解中出现的方程组,采用直接法计算代价比较高,迭代法则简单又实用,所以比较受工程人员青睐。
迭代法求解方程组就是构造一个无限的向量序列,使它的极限是方程组的解向量。
即使计算机过程是精确的,迭代法也不能通过有限次算术运算求得方程组的精确解,而只能逐步逼近它。
因此迭代法存在收敛性与精度控制的问题。
迭代法是常用于求解大型稀疏线性方程组(系数矩阵阶数较高且0元素较多),特别是某些偏微分方程离散化后得到的大型稀疏方程组的重要方法。
设n 元线性微分方程组b Ax = (1)的系数矩阵A 非奇异,右端向量0≠b ,因而方程组有唯一的非零解向量。
而对于这种线性方程组的近似解,前辈们发展研究了许多种有效的方法,有Jacobi 迭代法、Gauss —Seidel 迭代法,逐次超松弛迭代法(SOR 法),这几种迭代方法均属一阶线性定常迭代法,即若系数矩阵A 分解成两个矩阵N 和P 的差,即P N A -=;其中N 为可逆矩阵,线性方程组(1)化为:b x P N =-)(b Px Nx +=b N Px N x 11--+=可得到迭代方法的一般公式:d Gx xk k +=+))1(( (2)其中:P N G 1-=,b N d 1-=,对任取一向量)0(x 作为方程组的初始近似解,按递推公式产生一个向量序列)1(x ,)2(x ,...,)k x(,...,当k 足够大时,此序列就可以作为线性方程组的近似解。
分别用 jacobi 迭代法和 gauss-seidel 迭代法,求解方程组【jacobi 迭代法和 gauss-seidel 迭代法分别应用于方程组的求解】1. 引言在数学领域中,方程组的求解一直是一个重要的课题。
为了解决复杂的线性方程组,人们提出了各种迭代方法,其中 jacobi 迭代法和gauss-seidel 迭代法是两种常见的方法。
本文将探讨这两种迭代方法在求解方程组中的应用。
2. jacobi 迭代法的原理和应用jacobi 迭代法是一种基于逐次逼近的迭代方法。
对于线性方程组AX=B,其中 A 是系数矩阵,X 是未知数向量,B 是已知向量。
我们可以通过以下公式进行逐次逼近:X(k+1) = D^(-1)*(B - (L+U)X(k))其中,D、L、U 分别是 A 的对角线、下三角和上三角矩阵。
jacobi 迭代法的优点在于易于理解和实现,但在收敛速度上较慢,需要进行多次迭代才能得到精确解。
在实际应用中,需要根据实际情况选择合适的迭代次数。
3. gauss-seidel 迭代法的原理和应用与 jacobi 迭代法类似,gauss-seidel 迭代法也是一种基于逐次逼近的迭代方法。
不同之处在于,gauss-seidel 迭代法在计算 X(k+1) 时利用了已经得到的 X(k) 的信息,即:X(k+1)_i = (B_i - Σ(A_ij*X(k+1)_j,j≠i))/A_ii这种方式使得 gauss-seidel 迭代法的收敛速度较快,通常比 jacobi 迭代法更快,尤其是对于对角占优的方程组。
4. 分别用 jacobi 迭代法和 gauss-seidel 迭代法求解方程组为了更具体地说明 jacobi 迭代法和 gauss-seidel 迭代法的应用,我们分别用这两种方法来求解以下方程组:2x1 + x2 = 9x1 + 3x2 = 11我们将该方程组写成矩阵形式 AX=B:|2 1| |x1| |9||1 3| * |x2| = |11|我们根据 jacobi 迭代法和 gauss-seidel 迭代法的原理,依次进行迭代计算,直到满足收敛条件。
雅可比迭代法与高斯—塞德尔迭代法的比较赵连云(03211085)包头师范学院数学科学学院摘要:在求解线性代数方程组的许多实际问题中,尤其在偏微分方程的差分方法与有限方法的求解问题之中,用迭代法去解线形方程组有明显的优点.其中最主要的是雅可比(Jacobi )迭代法和高斯-塞得尔(Gauss-Seidel )迭代法,本文就这两种方法及它们的收敛判别条件作了较系统的归纳总结,并给出典型例子加以分析.对具体的求解中,选用那一种方法使解题更快速,更有效有着重要意义.关键词:Jacobi 迭代法; Gauss-Seidel 迭代法; 收敛; 比较.一 预备知识定义1 设()nn ij a A ⨯=为n 阶矩阵.① ①如果n,...,i ,a a ni j ij ij ii 21=∑>≠= (13)即A 的每一行对角元素的绝对值都严格大于同行其他元素绝对值之和,则称A 为严格对角优势矩阵.② ②如果n,...,i ,a a ni j i j ij ii 21=∑≥≠=且至少有一个不等式严格成立,则称A 为弱对角优势矩阵.例如⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-31131012是严格对角优势矩阵,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--310121011是弱对角优势矩阵.定义2 设()nn ij a A ⨯=是n 阶矩阵,如果经过行的互换及相应列的互换可化为⎥⎦⎤⎢⎣⎡221211A A A , 即存在n 阶排列矩阵P,使⎥⎦⎤⎢⎣⎡=2212110A A A AP P T其中2211A ,A 为方阵,则称A 是可约的,否则称A 为不可约的. 二 具体内容 (一) 雅可比迭代法设线性方程组b Ax = (1)的系数矩阵A 可逆且主对角元素nn a ,...,a ,a 2211均不为零,令 ()nna ,...,a ,a diag D 2211=并将A 分解成()D D A A +-= (2) 从而(1)可写成()b x A D Dx +-= 令11f x B x +=其中b D f ,A D I B 1111--=-=. (3)以1B 为迭代矩阵的迭代法(公式)()()111f xB xk k +=+ (4)称为雅可比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为⎩⎨⎧[],...,,k ,n ,...,i xab ax nij j )k (jji i ii)k (i21021111==∑-=≠=+ (5)其中()()()()()Tnx ,...x ,x x002010=为初始向量.由此看出,雅可比迭代法公式简单,每迭代一次只需计算一次矩阵和向量的乘法.在电算时需要两组存储单元,以存放()k x 及()1+k x.例1 用雅可比迭代法求解下列方程组⎪⎩⎪⎨⎧=+--=-+-=--2453821027210321321321.x x x .x x x .x x x解 将方程组按雅可比方法写成⎪⎪⎩⎪⎪⎨⎧++=++=++=840202083020107202010213312321.x .x .x .x .x .x .x .x .x取初始值()()()()()()TT,,,x ,x ,x x0000302010==按迭代公式()()()()()()()()()⎪⎪⎩⎪⎪⎨⎧++=++=++=+++840202083020107202010211331123211.x .x .x .x .x .x .x .x .x k k k k k k k k k进行迭代,其计算结果如表1所示表1(二) 高斯—塞德尔迭代法由雅可比迭代公式可知,在迭代的每一步计算过程中是用()k x 的全部分量来计算()1+k x的所有分量,显然在计算第i 个分量()1+k ix 时,已经计算出的最新分量()()1111+-+k i k x ,...,x 没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第1+k 次近似()1+k x的分量()1+k jx 加以利用,就得到所谓解方程组的高斯—塞德(Gauss-Seidel )迭代法.把矩阵A 分解成U L D A --= (6)其中()nna ,...,a ,a diagD 2211=,U ,L --分别为A 的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 ()b Ux x L D +=- 即22f x B x +=其中()()b L D f ,U L D B 1212---=-= (7)以2B 为迭代矩阵构成的迭代法(公式)()()221f xB xk k +=+ (8)称为高斯—塞德尔迭代法(公式),用 量表示的形式为⎩⎨⎧[],...,,k ,n ,,i x a x a b a x i j ni j )k (jij )k (jij i ii)k (i21021111111==∑∑--=-=+=++ (9)由此看出,高斯—塞德尔迭代法的一个明显的优点是,在电算时,只需一组存储单元(计算出()1+k ix 后()k ix 不再使用,所以用()1+k ix 冲掉()k ix ,以便存放近似解.例2 用高斯——塞德尔迭代法求解例1. 解 取初始值()()()()()()TT,,,x ,x ,x x0000302010==,按迭代公式()()()()()()()()()⎪⎩⎪⎨⎧++=++=++=++++++840202083020107202010121113311123211.x .x .x .x .x .x .x .x .x k k k k k k k k k进行迭代,其计算结果如下表2表2从此例看出,高斯—塞德尔迭代法比雅可比迭代法收敛快(达到同样的精度所需迭代次数少),但这个结论,在一定条件下才是对的,甚至有这样的方程组,雅可比方法收敛,而高斯—塞德尔迭代法却是发散的. (三)迭代收敛的充分条件定理1 在下列任一条件下,雅可比迭代法(5)收敛.①111<∑=≠=∞ni j j ii ij ia a max B ;②1111<∑=≠=nij i iiij ja a max B ;③ 111<∑=-≠=∞-nji i jjij jTa a max AD I定理2 设21B B ,分别为雅可比迭代矩阵与高斯—塞德尔迭代矩阵,则∞∞≤12B B (10)从而,当111<∑=≠=∞ni j j iiij ia a max B时,高斯—塞德尔迭代法(8)收敛. 证明 由21B B ,的定义,它们可表示成()U L DB +=-11()()U D L D I U L D B 11112-----=-=用e 表示n 维向量()T,...,,e 111=,则有不等式eB e B ∞≤11UD LD B 111--+=这里,记号|·|表示其中矩阵的元素都取绝对值,而不等式是对相应元素来考虑的,于是()()()Ie B L D I eL D B e U D ∞------≤-=111111容易验证()011==--nnLD L D所以,L D I 1--及LD I 1--可逆,且()()()1111111111-----------=++≤+++=-L D I LD ...L D I L D ...L D I LD I n n()I L D I≥---11从而有()()((){}e I B L D I LD I eU D L D I e B ∞----------≤⋅-≤111111121{()()}eB eLD II B I ∞--∞≤-⋅--=11111因此必有∞∞≤12B B因为已知11<∞B 所以12<∞B .即高斯—塞德尔迭代法收敛.若矩阵A 为对称,我们有定理3 若矩阵A 正定,则高斯—塞德尔迭代法收敛. 证明 把实正定对称矩阵A 分解为 TL L D A --=()TLU=,则D 为正定的,迭代矩阵()TL L D B 12--=设λ是2B 的任一特征值,x 为相应的特征向量,则()()x x L L D Tλ=--1以L D -左乘上式两端,并由TL L D A --=有()Ax x LTλλ=-1用向量x 的共轭转置左乘上式两端,得()Ax x x L xTTT--=-λλ1 (11)求上式左右两端的共轭转置,得Ax x x L x T T----=⎪⎭⎫ ⎝⎛-λλ1以λ--1和λ-1分别乘以上二式然后相加,得()()Axx x L L x TT T -----⎪⎭⎫ ⎝⎛-+=+⎪⎭⎫ ⎝⎛--λλλλλλ211由TL L D A --=,得()()Axx x A D x TT -----⎪⎭⎫ ⎝⎛-+=-⎪⎭⎫ ⎝⎛--λλλλλλ211即()Axxx L x TT---=-λλλ2211 (12)因为A 和D 都是正定的,且x 不是零向量,所以由(11)式得1≠λ,而由(12)式得012>-λ, 即1<λ,从而()12<B ρ,因而高斯—塞德尔迭代法收敛.定理4如果A 为严格对角优势矩阵或为不可约弱对角优势矩阵,则对任意()0x,雅可比迭代法(4)与高斯—塞德尔迭代法(8)均为收敛的.证明 下面我们以A 为不可约弱对角优势矩阵为例,证明雅可比迭代法收敛.要证明雅可比迭代法收敛,只要证()11<B ρ,1B 是迭代矩阵.用反证法,设矩阵1B 有某个特征值μ,使得1≥μ,则()01=-B I det μ,由于A 不可约,且具有弱对角优势,所以1-D 存在,且()()D A D DA D I IB I -+=--=---μμμ111从而()0=-+D A D det μ另一方面,矩阵()D A D -+μ与矩阵A 的非零元素的位置是完全相同的,所以()D A D-+μ也是不可约的,又由于1≥μ,且A 弱对角优势,所以n,...,i ,a a a nij i j ij ii ii 21=∑≥≥≠=μ并且至少有一个i 使不等号严格成立.因此,矩阵()D A D -+μ弱对角优势,故()D A D-+μ为不可约弱对角优势矩阵.从而()0≠-+D A D det μ 矛盾,故1B 的特征值不能大于等于1,定理得证. (四)典型例题例 设Ax=其系数矩阵A =⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡143434314343431证明:它的Jacobi 迭代公式发散,而 Gauss-Seidel 迭代公式收敛. 证:矩阵A 的Jacobi 迭代公式B = -D 1-(L+U )⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡------043434304343430B 1>1 B ∞>1∴只能用 ρ(B).f(λ)=B I -λ=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡λλλ434343434343=λ3-3⎪⎭⎫⎝⎛432λ+2⎪⎭⎫⎝⎛433=0 即0322716273=+-λλ∴431=λ432=λ233-=λ∴23)(max 31==≤≤λρiB i >1所以 其Jacobi 迭代公式发散. A 的高斯-塞得尔迭代矩阵G = -()L D +-1U()⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡---=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⨯⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡---=+-6445649016316904343000043004343014316301430011U L D ∴G=-()⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡---=+-64456490163169434301U L DG 1>1 G ∞>1∴只能用()G ρ=)(λf 06445649016316904343=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡---=-λλλλG I ∴01=λi 146.0633.02+=λi 146.0633.03-=λ∴ 1)(<G ρ所以 高斯-塞得尔迭代法收敛. 三 总结以上给出了雅可比迭代法和高斯-塞得尔迭代法及判断它们收敛的各种方法,通过例题可以看出雅可比迭代法的收敛性和高斯-塞得尔迭代法的收敛性之间没有必然的联系.这些知识让我们对迭代法有了更广泛更深入的了解.特别是在解线性方程组时,怎样选择合适的方法去解题有实际意义. 四 参考文献1 《数植分析原理》[M ] 吴勃英编 科学出版社 2003年8月2 《数值计算方法和算法》[M ] 张韵华等编 科学出版社 2000年1月3 《计算方法》[M ] 姚敬之等编 河海大学出版社 2002年4 《计算机数值方法》[M ] 施吉林等编 高等教育出版社 1999年5 《算法语言与计算方法基础》[M ] 刘水强编 科学出版社 2005年4月。
Matlab线性方程组的迭代解法(Jacobi迭代法Gauss-Seidel迭代法)实验报告2008年11月09日星期日12:491.熟悉Jacobi迭代法,并编写Matlab程序matlab程序按照算法(Jacobi迭代法)编写Matlab程序(Jacobi.m)function [x, k, index]=Jacobi(A, b, ep, it_max)%求解线性方程组的Jacobi迭代法,其中% A ---方程组的系数矩阵% b ---方程组的右端项% ep ---精度要求。
省缺为1e-5% it_max ---最大迭代次数,省缺为100% x ---方程组的解% k ---迭代次数% index --- index=1表示迭代收敛到指定要求;% index=0表示迭代失败if nargin <4 it_max=100; endif nargin <3 ep=1e-5; endn=length(A); k=0;x=zeros(n,1); y=zeros(n,1); index=1;while 1for i=1:ny(i)=b(i);for j=1:nif j~=iy(i)=y(i)-A(i,j)*x(j);endendif abs(A(i,i))<1e-10 | k==it_maxindex=0; return;endy(i)=y(i)/A(i,i);endif norm(y-x,inf)<epbreak;endx=y; k=k+1;end用Jacobi迭代法求方程组的解。
输入:A=[4 3 0;3 3 -1;0 -1 4];b=[24;30;-24];[x, k, index]=Jacobi(A, b, 1e-5, 100)输出:x =-2.999811.9987-3.0001k =100index =2.熟悉Gauss-Seidel迭代法,并编写Matlab程序function [v,sN,vChain]=gaussSeidel(A,b,x0,errorBound,maxSp)%Gauss-Seidel迭代法求解线性方程组%A-系数矩阵b-右端向量x0-初始迭代点errorBound-近似精度maxSp-最大迭代次数%v-近似解sN-迭代次数vChain-迭代过程的所有值step=0;error=inf;s=size(A);D=zeros(s(1));vChain=zeros(15,3);%最多能记录15次迭代次数k=1;fx0=x0;for i=1:s(1)D(i,i)=A(i,i);end;L=-tril(A,-1);U=-triu(A,1);while error>=errorBound & step<maxSpx0=inv(D)*(L+U)*x0+inv(D)*b;vChain(k,:)=x0';k=k+1;error=norm(x0-fx0);fx0=x0;step=step+1;endv=x0;sN=step;用Gauss-Seidel迭代法求解上题的线性方程组,取。
雅克比迭代法和高斯赛德尔迭代法的算法描述一. 雅克比迭代法雅克比迭代法(Jacobi Iteration)是计算数值解的一种迭代方法,它遵循一个简单的步骤:给定问题的初始值,按照一定的规则,用求出某一个矩阵元素,替换当前值,得到下一个矩阵值,重复这个步骤,直到满足某一个条件,即为所求解的结果。
雅克比迭代法求解矩阵问题的一般步骤为:(1)给定初始矩阵A和右端值矩阵B,将第i行第j列的元素表示为aij,bi;(2)第i行其它元素之和定义为s(i) =∑(j≠i)|a(i, j)|,亦即∑|aij|;(3)如果s(i)不等于0,则第i行第i列元素的值更新为xi=1 (b(i) ∑(j≠i)[a(i, j)x(j)])/a(i, i)(4)重复步骤3,直到满足|X(i)X(i)|<ε(ε为设定的误差),此时x即为所求解的结果。
二. 高斯-赛德尔迭代法高斯-赛德尔迭代法(Gauss-Seidel Iteration)是另一种迭代方法,算法的基本思想也是:通过迭代,计算出当前矩阵的第i行第j列的元素xi;然后更新第i行第j列元素的值,继续迭代,直到某种条件满足,即可求出矩阵的解。
高斯-赛德尔迭代法的基本步骤为:(1)给定初始矩阵A和右端值矩阵B,将第i行第j列的元素表示为aij,bi;(2)第i行其它元素之和定义为s(i) =∑(j≠i)|a(i, j)|,亦即∑|aij|;(3)如果s(i)不等于0,则第i行第i列元素的值更新为xi=1 (b(i) ∑(j<i)[a(i, j)x(j)]∑(j>i)[a(i,j)x(j)] )/a(i, i)(4)重复步骤3,直到满足|X(i)X(i)|<ε(ε为设定的误差),此时x即为所求解的结果。
总结从上面的对比来看,雅克比迭代法和高斯赛德尔迭代法的步骤基本一致,均采用迭代的方式求解矩阵A的解X,不同的是,高斯赛德尔迭代法在更新矩阵A的第i行第i列元素时,采用把小于i的j元素的值替换成当前迭代求得的值来计算,而雅克比迭代法采用把全部j元素的值替换成当前迭代求得的值来计算。
第八节 雅可比迭代法与高斯—塞德尔迭代法一 雅可比迭代法设线性方程组b Ax = (1) 的系数矩阵A 可逆且主对角元素nn a ,...,a ,a 2211均不为零,令()nna ,...,a ,a diag D 2211=并将A 分解成()D D A A +-= (2)从而(1)可写成 ()b x A D Dx +-=令11f x B x +=其中b D f ,A D I B 1111--=-=. (3) 以1B 为迭代矩阵的迭代法(公式)()()111f x B x k k +=+ (4)称为雅可比(Jacobi)迭代法(公式),用向量的分量来表示,(4)为⎩⎨⎧[],...,,k ,n ,...,i x a ba xnij j )k (j j i iii)k (i21021111==∑-=≠=+ (5)其中()()()()()Tn x ,...x ,x x 002010=为初始向量.由此看出,雅可比迭代法公式简单,每迭代一次只需计算一次矩阵和向量的乘法.在电算时需要两组存储单元,以存放()k x 及()1+k x . 例1 例1 用雅可比迭代法求解下列方程组⎪⎩⎪⎨⎧=+--=-+-=--2453821027210321321321.x x x .x x x .x x x解 将方程组按雅可比方法写成⎪⎪⎩⎪⎪⎨⎧++=++=++=8402020830201072020*******2321.x .x .x .x .x .x .x .x .x取初始值()()()()()()T T ,,,x ,x ,x x 0000302010==按迭代公式()()()()()()()()()⎪⎪⎩⎪⎪⎨⎧++=++=++=+++840202083020107202010211331123211.x .x .x .x .x .x .x .x .x k k k k k k k k k进行迭代,其计算结果如表1所示表1二 高斯—塞德尔迭代法由雅可比迭代公式可知,在迭代的每一步计算过程中是用()k x的全部分量来计算()1+k x的所有分量,显然在计算第i 个分量()1+k i x 时,已经计算出的最新分量()()1111+-+k i k x ,...,x 没有被利用,从直观上看,最新计算出的分量可能比旧的分量要好些.因此,对这些最新计算出来的第1+k 次近似()1+k x的分量()1+k jx 加以利用,就得到所谓解方程组的高斯—塞德(Gauss-Seidel )迭代法.把矩阵A 分解成U L D A --= (6)其中()nn a ,...,a ,a diag D 2211=,U ,L --分别为A 的主对角元除外的下三角和上三角部分,于是,方程组(1)便可以写成 ()b Ux x L D +=-即 22f x B x +=其中()()b L D f ,U L D B 1212---=-= (7)以2B 为迭代矩阵构成的迭代法(公式)()()221f x B x k k +=+ (8)称为高斯—塞德尔迭代法(公式),用 量表示的形式为⎩⎨⎧[],...,,k ,n ,,i x a x a b a xi j n i j )k (j ij )k (j ij i ii)k (i21021111111==∑∑--=-=+=++ (9)由此看出,高斯—塞德尔迭代法的一个明显的优点是,在电算时,只需一组存储单元(计算出()1+k ix 后()k ix 不再使用,所以用()1+k i x 冲掉()k ix ,以便存放近似解.例2 例2 用高斯——塞德尔迭代法求解例1.解 取初始值()()()()()()TT,,,x ,x ,x x 0000302010==,按迭代公式()()()()()()()()()⎪⎩⎪⎨⎧++=++=++=++++++840202083020107202010121113311123211.x .x .x .x .x .x .x .x .x k k k k k k k k k进行迭代,其计算结果如下表2从此例看出,高斯—塞德尔迭代法比雅可比迭代法收敛快(达到同样的精度所需迭代次数少),但这个结论,在一定条件下才是对的,甚至有这样的方程组,雅可比方法收敛,而高斯—塞德尔迭代法却是发散的.三 迭代收敛的充分条件定理1 在下列任一条件下,雅可比迭代法(5)收敛.①111<∑=≠=∞nij j iiij ia a max B ;②1111<∑=≠=nij i iiij ja a max B ;③ 111<∑=-≠=∞-nji i jjij jTa a max AD I定理2 设21B B ,分别为雅可比迭代矩阵与高斯—塞德尔迭代矩阵,则∞∞≤12B B (10)从而,当111<∑=≠=∞nij j iiij ia a max B时,高斯—塞德尔迭代法(8)收敛. 证明 由21B B ,的定义,它们可表示成()U L D B +=-11()()U D L D I U L D B 11112-----=-=用e 表示n 维向量()T,...,,e 111=,则有不等式eB e B ∞≤11UD L D B 111--+=这里,记号|·|表示其中矩阵的元素都取绝对值,而不等式是对相应元素来考虑的,于是()()()Ie B L D I eL D B e U D ∞------≤-=111111容易验证()11==--nnL D L D所以,L D I 1--及L D I 1--可逆,且()()()1111111111-----------=++≤+++=-L D I LD ...L D I L D ...L D I LD I n n()I L D I ≥---11从而有()()((){}e I B L D I L D I eU D LD I e B ∞----------≤⋅-≤111111121{()()}eB eL D I I B I ∞--∞≤-⋅--=11111因此必有∞∞≤12B B因为已知11<∞B 所以12<∞B .即高斯—塞德尔迭代法收敛.若矩阵A 为对称,我们有定理3 若矩阵A 正定,则高斯—塞德尔迭代法收敛.证明 把实正定对称矩阵A 分解为T L L D A --=()TL U =,则D 为正定的,迭代矩阵()T L L D B 12--=设λ是2B 的任一特征值,x 为相应的特征向量,则()()x x L L D T λ=--1以L D -左乘上式两端,并由TL L D A --=有()Ax x L T λλ=-1用向量x 的共轭转置左乘上式两端,得()Ax x x L xTTT--=-λλ1 (11)求上式左右两端的共轭转置,得Ax x x L x T T ----=⎪⎭⎫ ⎝⎛-λλ1以λ--1和λ-1分别乘以上二式然后相加,得()()Axx x L L x T T T -----⎪⎭⎫ ⎝⎛-+=+⎪⎭⎫ ⎝⎛--λλλλλλ211 由TL L D A --=,得()()Axx x A D x T T -----⎪⎭⎫ ⎝⎛-+=-⎪⎭⎫ ⎝⎛--λλλλλλ211即()Ax x x L x TT---=-λλλ2211 (12)因为A 和D 都是正定的,且x 不是零向量,所以由(11)式得1≠λ,而由(12)式得012>-λ, 即1<λ,从而()12<B ρ,因而高斯—塞德尔迭代法收敛.定义1 设()nn ij a A ⨯=为n 阶矩阵.① ①如果n,...,i ,a a nij i j ij ii 21=∑>≠= (13)即A 的每一行对角元素的绝对值都严格大于同行其他元素绝对值之和,则称A 为严格对角优势矩阵.② ②如果n,...,i ,a a nij i j ij ii 21=∑≥≠=且至少有一个不等式严格成立,则称A 为弱对角优势矩阵.例如⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡-310131012是严格对角优势矩阵,⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--310121011是弱对角优势矩阵. 定义2 设()nn ij a A ⨯=是n 阶矩阵,如果经过行的互换及相应列的互换可化为⎥⎦⎤⎢⎣⎡2212110A A A ,即存在n 阶排列矩阵P,使⎥⎦⎤⎢⎣⎡=2212110A A A AP P T其中2211A ,A 为方阵,则称A 是可约的,否则称A 为不可约的.A 是可约矩阵,意味着b Ax =可经过若干次行列重排,化为两个低阶方程组,事实上,b Ax =可化为 ()b P x P AP P TT T =,记()()()()⎥⎦⎤⎢⎣⎡==⎥⎦⎤⎢⎣⎡==2121d d d b P ,y y y x P TT于是,求解b Ax =化为求解()()()()()⎪⎩⎪⎨⎧=+=+22221212111d y A d y A y A可以证明,如果A 为严格对角优势矩阵或为不可约弱对角优势矩阵,则A 是非奇异的.定理4 如果A 为严格对角优势矩阵或为不可约弱对角优势矩阵,则对任意()0x ,雅可比迭代法(4)与高斯—塞德尔迭代法(8)均为收敛的.证明 下面我们以A 为不可约弱对角优势矩阵为例,证明雅可比迭代法收敛,其他证明留给读者.要证明雅可比迭代法收敛,只要证()11<B ρ,1B 是迭代矩阵.用反证法,设矩阵1B 有某个特征值μ,使得1≥μ,则()01=-B I det μ,由于A 不可约,且具有弱对角优势,所以1-D 存在,且 ()()D A D D A D I I B I -+=--=---μμμ111从而()0=-+D A D detμ另一方面,矩阵()D A D -+μ与矩阵A 的非零元素的位置是完全相同的,所以()D A D -+μ也是不可约的,又由于1≥μ,且A 弱对角优势,所以n,...,i ,a a a nij i j ij ii ii 21=∑≥≥≠=μ并且至少有一个i 使不等号严格成立.因此,矩阵()D A D -+μ弱对角优势,故()D A D -+μ为不可约弱对角优势矩阵.从而()0≠-+D A D det μ矛盾,故1B 的特征值不能大于等于1,定理得证.。
数值计算方法实验报告(五)班级:地信10801 序号:姓名:一、实验题目:jacobi迭代法和Gauss-Seidel迭代法二、实验学时: 2学时三、实验目的和要求:1.掌握迭代法的基础原理。
2.掌握jacobi迭代法和Gauss-Seidel迭代法的步骤。
3.能用程序语言对jacobi迭代法和Gauss-Seidel迭代法进行编程实现。
四、实验过程代码及结果1、代码:#include<iostream.h>#include<math.h>float x[100],xk[100];float e;int N,M=1000;float a[100][101];void initdata(){cout<<"输入方程阶数:";cin>>N;cout<<"输入误差限e:";cin>>e;cout<<"输入方程系数:"<<endl;for(int i=1;i<=N;i++)for(int j=1;j<=N+1;j++)cin>>a[i][j];cout<<"输入初始解向量x0:"<<endl;for(i=1;i<=N;i++)cin>>xk[i];}void jocobi(){int Nx=0,times=0;while(Nx<N){times++; Nx=0;if(times>=M){cout<<"发散"<<endl; break;}for(int i=1;i<=N;i++){float sum=0;for(int j=1;j<=N;j++)if(i!=j)sum+=xk[j]*a[i][j];x[i]=(a[i][N+1]-sum)/a[i][i];if(fabs(x[i]-xk[i])<e)Nx++;}for(i=1;i<=N;i++)xk[i]=x[i];}cout<<"times="<<times<<endl;for(int i=1;i<=N;i++)cout<<"x["<<i<<"]="<<x[i]<<endl;}void guass_seidel(){int Nx=0,times=0;while(Nx<N){times++;Nx=0;if(times>=M){cout<<"发散"<<endl;break;}for(int i=1;i<=N;i++){float sum1=0;float sum2=0;for( int j=i+1;j<=N;j++){sum1+=xk[j]*a[i][j];}for( j=1;j<=i-1;j++){sum2+=a[i][j]*xk[j];}x[i]=(a[i][N+1]-sum1-sum2)/a[i][i];if(fabs(x[i]-xk[i])<e)Nx++;}for(i=1;i<=N;i++)xk[i]=x[i];}cout<<"times="<<times<<endl;for(int i=1;i<=N;i++)cout<<"x["<<i<<"]="<<x[i]<<endl;}void main(){char ch;initdata();cout<<"请选择解方程的方法:\n";cout<<"A:jocobi B:guass_seidel \n";cin>>ch;if(ch=='A')jocobi();else if(ch=='B')guass_seidel();}2.结果:欢迎您的下载,资料仅供参考!。
数值分析5-用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组————————————————————————————————作者:————————————————————————————————日期:作业六:分别编写用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组Ax=B的标准程序,并求下列方程组的解。
可取初始向量X(0) =(0,0,0)’;迭代终止条件||x(k+1)-x(k)||<=10e-6(1)[8 −1 12 10 −11 1 −5][x1x2x3]=[143](2)[5 2 1−1 4 22 −3 10][x1x2x3]=[−12203]Jacobi迭代法:流程图开判断b中的最大值有没给x赋初值进行迭代结求出x,弱到100次还程序clear;clc;A=[8,-1,1;2,10,01;1,1,-5];b=[1;4;3];e=1e-6;x0=[0;0;0]';n=length(A);x=zeros(n,1);k=0;r=max(abs(b));while r>efor i=1:nd=A(i,i);if abs(d)<ewarning('矩阵A输入有误');return;endsum=0;for j=1:nif j~=isum=sum+A(i,j)*x0(j);endendx1(i)=(b(i)-sum)/A(i,i);endk=k+1;r=max(abs(x1-x0));x0=x1;fprintf('第%d次迭代:',k)fprintf('\n与上次计算结果的距离:%f \n',r)disp(x1);if k>100warning('不收敛');endendx=x0;程序结果(1)(2)Gauss-Seidel迭代法:程序clear;clc;%A=[8,-1,1;2,10,01;1,1,-5];%b=[1;4;3];A=[5,2,1;-1,4,2;2,-3,10];b=[-12;20;3];m=size(A);if m(1)~=m(2)error('矩阵A不是方阵');endn=length(b);%初始化N=0;%迭代次数L=zeros(n);%分解A=D+L+U,D是对角阵,L是下三角阵,U是上三角阵U=zeros(n);D=zeros(n);G=zeros(n);%G=-inv(D+L)*Ud=zeros(n,1);%d=inv(D+L)*bx=zeros(n,1);for i=1:n%初始化L和Ufor j=1:nif i<jL(i,j)=A(i,j);endif i>jU(i,j)=A(i,j);endendendfor i=1:n%初始化DD(i,i)=A(i,i);endG=-inv(D+L)*U;%初始化Gd=(D+L)\b;%初始化d%迭代开始x1=x;x2=G*x+d;while norm(x2-x1,inf)>10^(-6)x1=x2;x2=G*x2+d;N=N+1;endx=x2;程序结果(1)(2)。