09-2方程组的简单迭代法
第四章线性方程组的迭代法范文

第四章 线性方程组的迭代法第一节 迭代法及其收敛性一、迭代法的一般格式在前面我们已经介绍了解线性方程组b Ax = (1)的一些直接方法,下面我们将简略介绍一下解方程组(1)的另一类方法——迭代法,所谓迭代法是这样一种方法,对任意给定初始近似()0x ,按某种规则逐次生成序列()()()() ,x x ,x ,x k 210使极限()*∞→=x x lim k k (2)为方程组(1)的解,即b Ax =*设把矩阵A 分解成矩阵N 和P 之差P N A -=其中N 为非奇异矩阵,于是,方程组(1)便可以表示成b Px Nx +=即f Bx b N Px N x +=+=--11 (3)其中b N f ;P N B 11--==,据此,我们便可以建立迭代公式 ()() 2101,,k fBx x k k =+=+ (4)我们称迭代公式(4)中的矩阵B 为迭代矩阵. 若序列(){}kx收敛()*∞→=x x lim k k显然有f Bx x +=**即,极限*x 便是所求方程组的解.定义1(1)对给定的方程组(3),用公式(4)逐步代入求近似解 的方法称为迭代法.(2) 如果()k k x lim ∞→存在 (记为*x ),则称迭代法收敛,此时*x 就是方程组的解,否则称此迭代法发散.为了讨论迭代公式(4)的收敛性,我们引进误差向量.()(),...,,k ,x x e k k 210=-=* (5)由(3)和(4)便得到误差向量所满足的方程()()k k Be e =+1 (6)递推下去,最后便得到()()()011e B e k k ++= (7)二、迭代法的收敛性若欲由(4)所确定的迭代法对任意给定的初始向量()0x 都收敛,则由(7)确定的误差向量()k e应对任何初始误差()0e 都收敛于0.定义2若()0=-∞→A A lim k k (8)则称矩阵序列(){}kA依范数‖·‖收敛于A .由范数的等价性可以推出,在某种范数意义下矩阵序列收敛,则在任何一种范数意义下该矩阵序列都收敛.因此,对矩阵序列(){}kA收敛到矩阵A ,记为()AA lim k k =∞→ (9)而不强调是在那种范数意义下收敛.从定义及矩阵的行(列)范数可以直接推出下面定理. 定理1 设矩阵序列()()()(),...,k a A n n k ijk 21==⨯及矩阵()nn ij a A ⨯=,则(){}kA 收敛于A 的充分必要条件为()ijk ij k a a lim =∞→, n ,...,j ,i 21=因此,矩阵序列的收 敛可归结为元素序列的收敛.此外,还可以推出下面定理.定理2 迭代法(4)对任何()0x都收敛的充分必要条件为=∞→k k B lim (10)定理3 矩阵序列{}kB 收敛于0的充分必要条件为()1<B ρ (11)证明:如果0=∞→k k B lim ,则在任一范数‖·‖意义下有=∞→kk B lim而由第六节定理4有()()[]kk k B B B ρρ=≥所以必有()1<B ρ反之,若()1<B ρ则存在足够小的正数ε,使()1<+ερB ,则第六节定理5可知,存在范数α⋅使,()1<+≤εραB B .于是[]()()kkkB B B εραα+≤≤因为()()0=+∞→kk B lim ερ所以=∞→αkk B lim 即0=∞→k k B lim定理 4:迭代法(4)对任意()0x 都收敛的充分必要条件为()1<B ρ三、迭代法的收敛速度考察误差向量()()()()0e B x x e k k k ⋅=-=*设B 有n 个线性无关的特征向量n ,...,,ηηη21,相应的特征值为n ,...,,λλλ21,由()∑==nj jj a e10η得()()()0eB e k k =∑==n j j kj B a 1η∑==nj j kj j a 1ηλ可以看出,当()1<B ρ愈小时,()∞→→k k j 0λ愈快,即()0→k e 愈快,故可用量()B ρ来刻划迭代法的收敛快慢.现在来确定迭代次数k ,使()[]s kB -≤10ρ (12)取对数得()B ln ln s k ρ-⋅≥10定义3 称()()B ln B R ρ-= (13) 为迭代法(4)的收敛速度.由此看出,()1<B ρ愈小,速度R(B)就愈大,(12)式成立所需的迭代次数也就愈少.由于谱半径的计算比较困难,因此,可用范数‖B ‖来作为()B ρ的一种估计. 定理5 如果迭代矩阵的某一种范数1<=q B γ,则对任意初始向量()0x,迭代公式(4)收敛,且有误差估计式γγ||||q q||x x ||)k ()k ()k (1x x 1-*--≤- (14)或γγ||||q q ||xx ||)()(k)k (01x x 1--≤-* (15)证明 利用定理4和不等式()γρB B ≤,可以立即证得收敛的充分条件,下面推导误差估计式.因为*x 方程组的精确解,则f Bx x +=**又()1<=≤q B B γρ,则由第六节定理7可知,I-B 可逆,且()q B ||B I ||-=-≤--11111γγ由于()()f Bx f Bx x x k k --+=-*-*1()()f B I B Bx k 11----= ()()()[]f x B I B I B k ---=--11()()()[]kk x x B I B --=--11两边取范数即得()γγγγγ||||qq||||B I B ||x x ||)k ()k ()k ()k ()k (111x x 1x x ---*--≤--≤-又由于()()()()()()()()011211x x B x x B x x k k k k k -=-=-----所以()()()()γγγ0111x x B x x k k k -≤---,即γγ||||q q ||xx ||)()(k)k (01x x 1--≤-*有了定理5的误差估计式,在实际计算时,对于预先给定的精度ε,若有()()εγ<-+k k x x 1则就认为()1+k x是方程组满足精度的近似解.此外,还可以用第二个估计式(15)来事先确定需要迭代的次数以保证()ε<k e第二节 雅可比迭代法与高斯—塞德尔迭代法一、雅可比迭代法设线性方程组b Ax = (1)的系数矩阵A 可逆且主对角元素nn a ,...,a ,a 2211均不为零,令 ()nn a ,...,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 用雅可比迭代法求解下列方程组⎪⎩⎪⎨⎧=+--=-+-=--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 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 i x 不再使用,所以用()1+k ix 冲掉()k i x ,以便存放近似解.例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表2从此例看出,高斯—塞德尔迭代法比雅可比迭代法收敛快(达到同样的精度所需迭代次数少),但这个结论,在一定条件下才是对的,甚至有这样的方程组,雅可比方法收敛,而高斯—塞德尔迭代法却是发散的. 三、迭代收敛的充分条件定理1 在下列任一条件下,雅可比迭代法(5)收敛. ①111<∑=≠=∞nij 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<∑=≠=∞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 LD I eU D LD I e B ∞----------≤⋅-≤111111121{()()}eB eLD I I B I ∞--∞≤-⋅--=11111因此必有∞∞≤12B B因为已知11<∞B 所以12<∞B .即高斯—塞德尔迭代法收敛.若矩阵A 为对称,我们有定理3 若矩阵A 正定,则高斯—塞德尔迭代法收敛. 证明:把实正定对称矩阵A 分解为 TL 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 设()n n 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 设()n n 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 TTT=,记()()()()⎥⎦⎤⎢⎣⎡==⎥⎦⎤⎢⎣⎡==2121d d d b P ,y y y x P T T于是,求解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 ni j i j ij ii ii 21=∑≥≥≠=μ并且至少有一个i 使不等号严格成立.因此,矩阵()D A D -+μ弱对角优势,故()D A D -+μ为不可约弱对角优势矩阵.从而()0≠-+D A D det μ 矛盾,故1B 的特征值不能大于等于1,定理得证.第三节 超松驰迭代法逐次超松驰迭代法(Successive Over Relaxation Me thod,简称SOR 方法)是高斯—塞德尔方法的一种加速方法,是解大型稀疏矩阵方程组的有效方法之一,它具有计算公式简单,程序设计容易,占用计算机内存较少等优点,但需要较好的加速因子(即最佳松驰因子).下面我们首先说说松驰一词的含意,再利用它来解释雅可比迭代法与高斯—塞德尔迭代法,最后给出逐次超松驰迭代法的推算公式和收敛性条件.设线性方程组b Ax = (1)其中()n n ij a A ⨯=可逆 ,且对角元素nn a ,...,a ,a 2211均不为0,如果()Tn x ,...x ,x x 21= 是(1)的近似解,一般说来n,...,i ,x a b r nj j ij i i 211=∑-== (2)不是0,这可理解为x “不合格”,把不合格的x 更换为新的近似解X ,希望新的残向量r ’“变小”,想实现这一点的简单方法是每一次只把x 在(2)中的一个式(例如第i 个)中的一个分量进行更换,使新的残向量的第i 个分量变成0.这样,我们就说第i 个方程被松弛了.一般都把第i 个式中第i 个元i x 换掉,这相当于求ξ使∑--∑-=+=-=ni j jij ii i j j ij i x a a x a b 1110ξ (3)因此,雅可比迭代法将()k x代换为()1+k x的过程,实际上是对1≤i ≤n 把()()∑-==nj k jij i k ix a b r 1(4)变为()()()∑--∑-=+=+-=ni j k jij k iii i j k jij i x a x a x a b 11110 (5)的过程(松驰的过程).由()k x代换为()1+k x还可看作是()()修正向量+=+k k x x 1 (6)而修正量与修正公式可写成为()()()n,...,i ,r a x x k i iik ik i2111=+=+ (7)倘若在修正量之前乘以一个因子ω,即以第i 个分量()()()n,...,i ,r a x x k i iik ik i2111=+=+∧ω (8)为向量作新的近似向量(第k+1次迭代向量)代替原来的()k x 就得到所谓带松驰因子ω的迭代法.注意到,用(8)中的()1+∧k ix 代替(4)中的()k i x ,一般并不能使()()()()∑--∑-=+=+∧-=+∧ni j k jij k i ii i j k jij i k ix a x a x a b r 11111 (9)为0,而为()()()k i k ir r ω-=+∧11 (10)在(8)中取1=ω, ()1+∧k ix 就是(7)中的()1+k x,恰好使新的残量()1+∧k ir 为0,这就使第i 个方程松驰了;如1>ω,则用()1+∧k i x 代换第i 个方程中的()k i x 将使残量由()k ir 变成与()k i r 有不同符号的新残量()1+∧k ir ,于是我们就说第i 个方程被松驰过头了(超松驰),或说()k i x 被修改过分了(超过了使残量正好为0的程度);如1<ω,则用()1+∧k ix 代换第i 个方程中的()k i x 时,新残量()1+∧k ir 与()k i r 同号,并且当0>ω时,它的绝对值小于()k i r 之绝对值,于是我们不妨认为第i 个方程还松驰得不够(低松驰)或称()k i x 被修改得不够,不管是超松驰还是低松驰(1>ω或1<ω),我们一概都称为超松驰,即1≠ω时,我们称⎩⎨⎧()n,...,,k ,n ,...,i x a b a xxn j )k (j ij i ii)k (i)k (i21021111==∑-+==+ω(11)为带松驰因子ω的同时迭代法(公式).带松驰因子ω的同时迭代法用处并不大,讲它的目的只是为了解释迭代,修改和松驰的含意,使我们能容易懂得什么是逐次超松驰法.下面介绍什么是逐次超松驰法.类似于高斯—塞德尔迭代法,在(11)式中用新的()1+k jx 代替旧的()k jx ,i ,...,j 121-= 可得⎩⎨⎧()n,...,,k ,n ,...,i x a x a b a xxn i j )k (j ij i j )k (j ij i ii)k (i)k (i2102111111==∑-∑-+==-=++ω(12)称为带松驰因子ω的逐个法或逐个超松驰迭代法(公式).显然,(12)式可改写成()()()()111+++-=k i~k ik ix x x ωω (13)其中()∑-∑-==-=++n i j )k (j ij i j )k (j ij i ii)k (i~x a x a b a x 11111为高斯—塞德尔迭代所得,所以逐个超松驰迭代法是高斯—塞德尔迭代法的一种加速方法.由(12)式()()∑-∑-+-==-=++nij )k (j ij i j )k (j ij i )k (iii )k (iii x a xa b xa xa 11111ωω用分解式U L D A --=,则上式为()()∑-∑-+-==-=++nij )k (j ij i j )k (j ij )k ()k (x a xa b DxDx11111ωω即ωωf x B x )k ()k (+=+1 (14) 其中[]U D )()L D (B ωωωω+--=-11b )L D (f 1--=ωωω (15)(14)为超松驰迭法(公式)的矩阵形式ωB 称为其迭代矩陈例:用逐次超松驰迭代法求解方程组⎪⎩⎪⎨⎧=+--=-+-=--2453821027210321321321.x x x .x x x .x x x解:取()()()()()()TT,,,x ,x ,x x 0000302010==,迭代公式 ()()(()()())()()(()()())()()(()()())⎪⎪⎪⎩⎪⎪⎪⎨⎧-++⋅+=+++⋅+=++-⋅+=++++++k k k k k k k k k k k k k k k x x x .x x x x x .x x x x x .x x 312113133211212321111524512103810121027101ωωω取0551.=ω计算结果为表3表3对ω取其他值,计算结果满足误差510-∞≤-*)k (x x的迭代次数如下:表4从此例看到,松驰因子选择得好,会使超松驰迭代法的收敛大大加速.使收敛最快的松驰因子称为最佳松驰因子.本例的最佳松驰因子为0551.=ω,一般地,最佳松驰因子*ω应满足()()ωωρρB min B =*最佳松驰因子理论是由Young(1950年)针对一类椭圆型微分方程数值解得到的代数方程组b Ax =(具有所谓性质A 和相容次序)所建立的理论,他给出了最佳松驰因子公式()J pt B 2112ρω-+=其中J B 是雅可比迭代矩阵.定理1 设n ,..,i ,a ii 210=≠,且超松驰迭代法(12)收敛,则松驰因子20<<ω (16)证明:设SOR 方法收敛,根据迭代法收敛的充要条件可知,()1<ωρB . 设ωB 的特征值为n ,...,λλλ21,则 ()(())nn B ...B det ωωρλλλ≤=21即()(())11<≤nnB B d e t ωωρ而()(())(())U D det LD det B det ωωωω+-⋅-=-11()nω-=1所以11<-ω该定理说明对于解一般线性方程组(1)()n ,...,,i ,a ii 210=≠,超松弛迭代法只有取松弛因子ω在()20,范围内才能收敛.反过来,对A 是正定矩阵有下面结果. 定理2 设A 是对称正定矩阵,且20<<ω,则超松弛迭代法(12)收敛. 证明:设λ是ωB 的任一特征值,在上述假定下,若能证明1<λ,那么定理得证. 事实上,设x 为λ对应特征向量,即 0≠=x ,x x B λω亦即()()()x L D x U D ωλωω-=+-1 考虑数量积 (()())(())x ,x L D x ,x U D ωλωω-=+-1则()()()()()x ,Lx x ,Dx x ,Ux x ,Dx x ,Dx ωωωλ-+-=显然()012>≡∑==σni i iix ax ,Dx记()βαi x ,Lx +=- 由于TA A =,所以T L U =()()βαi x ,Lx Lx ,x x ,Ux ________-=⎪⎭⎫ ⎝⎛-=-=-()()()ασ20+=--=<x ,x U L D x ,Ax所以()()ωβαωσωβωωσσλi i +++--=2 从而()()2222222βωαωσβωαωωσσλ+++--=当20<<ω时()2αωωσσ--()()()0222<-+=+-ωασωσαωσyy即1<λ.。
线性代数方程组的迭代法

x1(0)
x1(1)
x1(k)
x(0) x2(0) , x(1) x2(1) , , x(k) x2(k ) ,
x3(0)
x3(1)
x 3( k
)
迭代到第10次有 x(10) (3.000032,1.999838,0.9998813)T ;
x* (3, 2, 1)T
A.
2020/6/18
第6章 解线性方程组的迭代法
4
例1 设有矩阵序列
A
0
1
,
A2
2
0
且设 ,1 考查其极限.
2 2
,
,
Ak
k
0
k
k1 k
,
解 由于,当 时1,有 lim k 0. k
所以
lim
k
Ak
lim Ak k
0 0
0 0
.
2020/6/18
第6章 解线性方程组的迭代法
5
定理 1 lim x(k) x* lim x(k) x * 0,
第6章 解线性方程组的迭代法
6
6.1.2 迭代法的基本概念
Ax b, 为非奇A异矩阵 当 A为低阶稠密矩阵时,选主元消去法是有效方法.
WHY
迭代法适用于求解大型稀疏的线性方程组。 迭代法通常都可利用 中A有大量零元素的特点.
WHAT
构造迭代格式产生迭代序列 由迭代序列来逼近原方程组的解
x(0) (初始向量),
6.1.1 向量序列与矩阵序列的极限
定义2 设有向量序列 {x(k)} Rn , x(k) (x1(k) , x2(k) , , xn(k) )T Rn ,
如果存在 x (x1 , x2 , ,,xn )使T Rn
方程与方程组的迭代解法精品PPT课件

迭代收敛定理
再证根的唯一性
设有 1,2 [a,b] 均为方程的根 则 | 1 2 || (1) (2 ) | L | 1 2 | 因为 0<L<1 ,所以只可能 1 2 , 即根是唯一的。
迭代收敛定理
试探法
任取正整数n,令h
b-a n
,
xi
a
ih(i
0
n), 顺次
计算f (x0 ), f (x1), ,f (xn ).
1.若发现f (xk ) 0,则取xk为;
2.若发现f
( xk
1 )
f
(
xk
)
0,则取
1 2
( xk
1
xk
)为。
所得的近似值误差不超过h。
二分法(区间平分法)
先确定有根区间 [a,b]
的右端得到 x1 (x0 ) ,再以 x1为一个猜 测值,代入 x (x) 的右端得 x2 (x1)
反复迭代得 xk1 (xk ) k 0,1,
迭代法及收敛性
若
{xk }收敛,
即
lim
k
xk
lim
n
xn 1
lim
n
(
xn
)
(lim n
xn )
( )
故 是 x (x) 的一个根
xk1 (xk ) k 0,1,
6.1 方程求根法
本节讨论求解方程 f (x) 0的近似解法。 试探法与二分法 迭代法及其收敛条件 迭代法收敛速度 加速收敛技术 牛顿迭代法 弦割法
6.1.1 试探法和二分法
理论依据:
零点定理:如果函数y f (x)在区间[a,b]
连续且f (a) f (b) 0,则在区间(a,b)内必定存在, 使f ( ) 0。称为函数(f x)的零点或f (x) 0的根。
第三章 迭代法s4 解线性方程组的迭代法

得 x(1) = ( 0.5000, 2.8333, -1.0833 )T
x(9) = ( 2.0000, 3.0000, -1.0000 )T
举例(续)
SOR 迭代格式
( x1( k 1) (1 ) x1( k ) 1 x2k ) 2 ( k 1) (k ) ( k 1) (k ) x2 (1 ) x2 8 x1 x3 3 ( k 1) ( ( x3 (1 ) x3k ) 5 x2k 1) 2
( k ( k 在计算 xi( k 1) 时,如果用 x1 k1) ,, xi(11) 代替 x1 k ) ,, xi(1) ,则 可能会得到更好的收敛效果。此时的迭代公式为
x1( k 1) ( x2k 1) ( k 1) xn
( ( ( b1 a12 x2k ) a13 x3k ) a1n xnk ) a11 ( ( b2 a21 x1( k 1) a23 x3k ) a2 n xnk ) a22
解得
x
x ( k 1) (1 ) x ( k ) D 1 b Lx ( k 1) Ux ( k )
( k 1)
D L
1
1
(1 ) D U x
(k )
D L b
1
GS D L
Jacobi 迭代 x( k 1) D1 ( L U ) x( k ) D1b
M = D, N = M – A = -(L + U)
GS 迭代
x
( k 1)
L D Ux
1
(k )
第五章 解线性方程组的迭代解法

定义迭代法为: 定义迭代法为:
x ( k + 1) = G J x ( k ) + g
其中Jacobi迭代矩阵:GJ = D1 ( L + U ) 迭代矩阵: 其中 迭代矩阵
g = D 1b = (7.2, 8.3, 8.4)T 取 x ( 0 ) = (0, 0, 0)T , 代入迭代式,得x(1) = Bx ( 0 ) + g = (7.2, 8.3, 8.4)T x ( 2 ) = Bx (1) + g = (9.71,10.70,11.5)T x (9 ) = (10.9994,11.9994,12.9992) 精确解为 x = (11,12,13)T .
记
A = D L U
其中 D = diag (a11 ,, ann ) , L, U 分别为 A 的 严格下、上三角形部分元素构成的三角阵 严格下、上三角形部分元素构成的三角阵. Gauss-Seidel方法的矩阵形式为 方法的矩阵形式为
x ( k +1) = D1 ( Lx ( k +1) + Ux ( k ) + b)
或者
x ( k +1) = ( D L)1Ux ( k ) + ( D L)1 b
( 这说明Gauss-Seidel方法的迭代矩阵为 D L)1U 方法的迭代矩阵为 这说明
从而有
定理5.2 定理5.2 Gauss-Seidel方法收敛的充分必要条件为 方法收敛的充分必要条件为
ρ (GG ) < 1 或
计算方法3_线性方程组迭代解法

计算方法3_线性方程组迭代解法线性方程组的迭代解法是解决线性方程组的一种常见方法,常用于大规模的线性方程组求解。
该方法通过不断迭代更新解的近似值,直到满足一定的收敛准则为止。
线性方程组的迭代解法有很多种,其中最经典的是雅可比迭代法、高斯-赛德尔迭代法和超松弛迭代法。
本文将分别介绍这三种迭代解法及其计算方法。
雅可比迭代法是一种比较简单的线性方程组迭代解法,它的基本思想是先将线性方程组转化为对角占优的形式,然后通过迭代求解逐渐接近精确解。
雅可比迭代法的迭代公式为:其中,x^(k+1)是第k+1次迭代的近似解,n是未知数的个数,a_ij 是系数矩阵A的元素,f_i是方程组的右端向量的元素。
雅可比迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式,即保证矩阵A的对角元素绝对值大于其它元素的绝对值。
2.初始化向量x^(0),设定迭代终止准则。
3.根据雅可比迭代公式,计算x^(k+1)。
4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。
高斯-赛德尔迭代法是雅可比迭代法的改进方法,它的基本思想是在每次迭代计算x^(k+1)时,利用已经计算出的近似解作为x的一部分。
高斯-赛德尔迭代法的迭代公式为:其中,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。
高斯-赛德尔迭代法的计算步骤如下:1.将线性方程组转化为对角占优的形式。
2.初始化向量x^(0),设定迭代终止准则。
3.根据高斯-赛德尔迭代公式,计算x^(k+1)。
4.判断迭代终止准则是否满足,如果满足,则停止迭代,返回近似解x^(k+1);否则,继续进行下一次迭代。
超松弛迭代法是对高斯-赛德尔迭代法的一种改进方法,它引入了松弛因子ω,通过调整参数ω的值,可以加快迭代的收敛速度。
超松弛迭代法的迭代公式为:其中,0<ω<2,x^(k+1)_i是第k+1次迭代的近似解中第i个未知数的值,x^(k)_i是第k次迭代的近似解中第i个未知数的值。
简单迭代法
问题: 由g ( x k ) = x k + 1 , 求 x k + 1,然而 x k 是否是g(x)定义域上的值? 问题: 是否是g(x)定义域上的值? g(x)定义域上的值 定义4 保持有界, 且全在g(x)定义域内, g(x)定义域内 定义4 若迭代序列 { x k } 保持有界, 且全在g(x)定义域内,则 lim xk = x* . 则简单迭代 简单迭代法(3.2)称为适定 (3.2)称为适定的 若进一步有 k → ∞ 简单迭代法(3.2)称为适定的; 称为收敛 法(3.2)称为收敛的。 称为收敛的 迭代公式 x k + 1 = g ( x k ), k = 0,1,L ( 3 . 2 ) 当迭代(3.2)收敛时, 又是g(x)的连续点, g(x)的连续点 当迭代(3.2)收敛时,极限点 x * 又是g(x)的连续点,则 (3.2)收敛时 * = g( lim xk ) = g( x * ) x = limxk +1 = lim g ( xk ) k →∞
a ≤ x ≤b
x ∈[ a , b ]
邻近讨论, 因此有局部收敛定理4 实际计算中往往只在根 x 邻近讨论, 因此有局部收敛定理4: 若 ( 定理4 局部收敛定理) 定理4 局部收敛定理) g ( x ) 在不动点 x * 的 δ 邻域满足 x ∈ [ x* δ , x* + δ ], 有 g ( x ) g ( x * ) ≤ L x x * ,( 3 . 7 ) 0 < L < 1, * x0 ∈ [ x* δ , x* + δ ], 由 xk +1 = g( xk ) 产生的序列{ x k } 收敛于 x , 则 x* xk ≤ Lk x* x0 , k = 0,1,L. ( 3 .8 ) 且有误差估计: 且有误差估计: 证明: 证明:k ≥ 1, x* xk = g( x* ) g( xk 1 ) ≤ L x* xk 1 ∴ x* x1 ≤ L x* x0 ≤ Lδ < δ,
第五章 线性方程组的迭代法
(k ) (k ) (k ) (k) T 1 i n
( k 1)
n
(L U ) x
aij x j
(k)
(k )
b ,写成分量
b (i 1, 2,, n) 于是,解 Ax b的Jacobi迭代法的计算公式为: Jacobi迭代法 由 aii 0(i 1, 2,, n) ,选取 M 为 A 的对角元素部分, 即选取 M D , D N ,可得Jacobi迭代公式: A
5.1 引言
已知其精确解为: (1,1,1) 。现将方程组改写成如下的 x 1 1 7 等价形式: x x x
* T
2 3 1 9 9 9 1 1 8 x1 x3 x2 10 10 10 1 1 13 x1 x2 x3 15 15 15
1 (k ) 1 (k ) 7 ( k 1) x x2 x3 1 9 9 9 1 (k ) 1 (k ) 8 ( k 1) 由此建立迭代格式(公式): x2 10 x1 10 x3 10 1 (k ) 1 ( k ) 13 ( k 1) x3 x1 x2 15 15 15
nn ij
xM
(0)
1
Nx M b
1
这样,可构造迭代法:
取x 为初始向量 ( k 1) (k ) x Bx f (k 0,1,)
其中: M N M (M A) I M A, f M b, 称 B I M A B 为迭代法的迭代矩阵,选取 M 阵,就得到解 Ax b 的各 种迭代法。
数值计算_第4章 解线性方程组的迭代法
数值计算_第4章解线性方程组的迭代法————————————————————————————————作者:————————————————————————————————日期:第4章解线性方程组的迭代法用迭代法求解线性方程组与第4章非线性方程求根的方法相似,对方程组进行等价变换,构造同解方程组(对可构造各种等价方程组,如分解,可逆,则由得到),以此构造迭代关系式(4。
1)任取初始向量,代入迭代式中,经计算得到迭代序列。
若迭代序列收敛,设的极限为,对迭代式两边取极限即是方程组的解,此时称迭代法收敛,否则称迭代法发散。
我们将看到,不同于非线性方程的迭代方法,解线性方程组的迭代收敛与否完全决定于迭代矩阵的性质,与迭代初始值的选取无关。
迭代法的优点是占有存储空间少,程序实现简单,尤其适用于大型稀疏矩阵;不尽人意之处是要面对判断迭代是否收敛和收敛速度的问题.可以证明迭代矩阵的与谱半径是迭代收敛的充分必要条件,其中是矩阵的特征根。
事实上,若为方程组的解,则有再由迭代式可得到由线性代数定理,的充分必要条件.因此对迭代法(4。
1)的收敛性有以下两个定理成立。
定理4.1迭代法收敛的充要条件是。
定理4.2迭代法收敛的充要条件是迭代矩阵的谱半径因此,称谱半径小于1的矩阵为收敛矩阵。
计算矩阵的谱半径,需要求解矩阵的特征值才能得到,通常这是较为繁重的工作.但是可以通过计算矩阵的范数等方法简化判断收敛的工作。
前面已经提到过,若||A||p矩阵的范数,则总有。
因此,若,则必为收敛矩阵。
计算矩阵的1范数和范数的方法比较简单,其中于是,只要迭代矩阵满足或,就可以判断迭代序列是收敛的。
要注意的是,当或时,可以有,因此不能判断迭代序列发散。
在计算中当相邻两次的向量误差的某种范数小于给定精度时,则停止迭代计算,视为方程组的近似解(有关范数的详细定义请看3。
3节。
)4.1雅可比(Jacobi)迭代法4。
1.1 雅可比迭代格式雅可比迭代计算元线性方程组(4.2)写成矩阵形式为。
迭代法求解方程原理
迭代法求解方程:原理与步骤详解迭代法,又称为辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法(或者称为一次解法),即一次性解决问题。
迭代法又分为精确迭代和近似迭代。
迭代法求解方程的原理是基于数学中的逼近理论,通过构造一个序列,使得该序列的极限值就是方程的解。
这种方法通常用于求解非线性方程或者方程组,因为这些方程可能难以通过直接求解的方式得到解析解。
迭代法求解方程的基本步骤:1.选择迭代函数:根据待求解的方程,选择一个合适的迭代函数。
这个迭代函数通常是通过对方程进行某种变换得到的。
2.确定迭代初值:为迭代过程选择一个初始值,这个初始值可以是任意的,但不同的初始值可能会影响到迭代的收敛速度和稳定性。
3.进行迭代计算:使用迭代函数和初始值,计算得到序列的第一个值。
然后,用这个值作为下一次迭代的输入,继续计算得到序列的下一个值。
如此反复进行,直到满足某个停止条件(如达到预设的迭代次数,或者相邻两次迭代结果的差值小于某个很小的阈值)。
4.判断解的有效性:如果迭代过程收敛,即序列的极限值存在且唯一,那么这个极限值就是方程的解。
否则,如果迭代过程发散,或者收敛到非唯一解,那么这种方法就失败了。
迭代法的收敛性:迭代法的关键问题是判断迭代过程是否收敛,即序列的极限值是否存在且唯一。
这通常取决于迭代函数的选择和初始值的设定。
对于某些迭代函数,无论初始值如何,迭代过程都会收敛到同一个值;而对于其他迭代函数,迭代过程可能会发散,或者收敛到多个不同的值。
迭代法的优缺点:优点:◆迭代法适用于求解难以直接求解的方程或方程组。
◆迭代法通常比直接法更容易编程实现。
◆在某些情况下,迭代法可能比直接法更快。
缺点:◆迭代法可能不收敛,或者收敛速度很慢。
◆迭代法的收敛性通常需要额外的数学分析或实验验证。
◆对于某些方程,可能需要尝试不同的迭代函数和初始值,才能找到有效的解决方案。
常见的迭代法:◆雅可比迭代法:用于求解线性方程组的一种方法,通过不断更新方程组的近似解来逼近真实解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013-2014(1)专业课程实践论文
题目:方程组的简单迭代法
一、算法理论
1.解线性方程组的两种方法:
直接法: 经过有限次运算后可求得方程组精确解的方法(不计舍入
误差!)
迭代法:从解的某个近似值出发,通过构造一个无穷序列去逼近精
确解的方法。
2.迭代法主要研究的问题:
1)迭代格式的构造;
2)迭代的收敛性分析;
3)收敛速度分析;
4)复杂性分析;(计算工作量)
5)初始值选择。
3.迭代法的原理:
将原线性方程组bAx中系数矩阵的主对角线移到一边并将其系
数化为一,然后在给定迭代初值的情况下通过迭代的方法求解线性
方程组的值。
4.迭代法的基本思想:
将线性方程组 bAx (1)
(其中A为n阶非奇异矩阵,b为n维向量)
改写成等价形式 fBxx (2)
构造简单迭代格式:
jkjkj
fBxx)()1()(
,,...2,1,0k (3)
亦即
jkjkj
fBxx)()1()(
, ,...,,...,n;k,j1021 (4)
可算出线性方程组(1)的近似解序列:))1(0,...,kxxx()(
我们把用公式(3)进行迭代求解的方法称为简单法,并称式(3)
为简单迭代式,矩阵B称为迭代矩阵,)(0x称为初始近似解,
)(k
x
称为k次近似解,k称为迭代次数。
二、算法框图
始
输入数据
)0(
ii
xx
ni,...2,1
1k
,...1,0;,...,2,1,)()()1(knjfBxy
jjkki
||max1iinixy
Nk
输入迭代
失败标志
终
输入
nyyy,...,21
niyxkkii,...,2,11
三、算法程序
#include
#include
#include
using namespace std;
#define kk 50 //定义最大方程元数
int n,i,c,j,hh,gg,mm;
double A[kk][kk],x[kk][kk],b[kk],y[kk],a[kk],z[kk],m,nn,d,e=1,w,fff ;
int main()
{
cout<<"输入的方程元数"<
cout<<"请输入方程系数矩阵:"<
cout<<"请输入右边向量:"<
cout<<"输入你想要的迭代精度(建议1e-5以上)!"<
cout<<"输入最大迭代次数(建议300次以上)!"<
//计算出迭代矩阵
for(i=0;i
b[i]=b[i]/A[i][i];
for(j=0;j
if(i==j)
{
x[i][i]=0;
}
else
{
x[i][j]=-A[i][j]/A[i][i];
}
}
}
//输出迭代矩阵
cout<<"计算出迭代矩阵为:"<
for(j=0;j
//赋迭代初值
cout<<"输入迭代初值"<
int f=1;
//简单迭代法
cout<<" ";
for(i=1;i
cout<
cout<
{
for(i=0;i
z[i]=y[i];
nn=0;
for(j=0;j
nn=nn+x[i][j]*y[j];
y[i]=nn+b[i];
}
e=fabs(z[0]-y[0]);
if(fabs(z[i]-y[i])>e)
e=fabs(z[i]-y[i]);
if(i==0)
{
cout<
cout<
cout<
{
cout<<"迭代次数大于"<
}
}
cout<
cout<<"X"<<"["<cout<
exit(1);
}
四、算法实现
例1.用简单迭代法解线性方程组
2.453.82102.7210321321321xxx
xxx
xxx
解: 先在输入方程元数内输入3
在输入方程系数矩阵内输入10 -1 -2;-1 10 -2; -1 -1 5
在输入右边向量内输入7.2 8.3 4.2
输入想要的迭代精度0.000000001
输入最大迭代次数25
输入迭代初始值0 0 0
运行结果如图4.1
图4.1
例2.用简单迭代法解方程组
12232121xx
xx
解:先在输入方程元数内输入2
在输入方程系数矩阵内输入3 1;1 2
在输入右边向量内输入2 1
输入想要的迭代精度0.0000001
输入最大迭代次数15
输入迭代初始值0.1 0.1
运行结果如图4.2
图4.2