雅可比迭代法
Jacobi迭代法
Jacobi 迭代法设方程组Ax=b 中的A 是n n ⨯阶矩阵,x 和b 都是n 维列向量。
若系数矩阵A 为非奇异的且0,1,2,ii a i n ≠=L ,将A 分解为:A=D+L+U其中1122(,,,)nn D diag a a a =L21120000000n n a L a a ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦L L M M O L, 121200000n n a a a U ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦L L M M OM L 将方程组1,1,2,,nijji j a xb i n ===∑L乘以1iia ,得到等价的方程组 11(),1,2,,ni i ij j j ii j ix b a x i n a =≠=-=∑L简记为:X Bx f =+其中 B=I-D1-A=-D1-(L+U), f= D1-b我们称()x Bx f ϕ=+为迭代函数,任取初始向量(0)x x =,按照(1)()k k xBx f +=+用矩阵运算表示,完成这一步骤相当于用k L 左乘以第k-1步所形成的方程组,即形式,称这种迭代方法为Jacobi 迭代法。
Jacobi 迭代法算法简单描述:(0)(0)(0)(0)12(,,,),T n x x x x =L ( 向量初始)For 1,2,k =L For 1,2,,k n =L如果()(1)k k xx ε--≤ 停止,否则Next k用Jacobi 迭代法求解方程组实例为:1231231222213225x x x x x x x x x +-=⎧⎪++=⎨⎪++=⎩,的解,初始向量(0)(0,0,0),T x = 解 由公式知,Jacobi 迭代法为:(1)()()123(1)()()213(1)()()3121223522k k k k k k k k k x x x x x x x x x +++⎧=-+⎪=--⎨⎪=--⎩ 由初始向量(0)(0,0,0),T x=迭代可得(1)(1,3,5),T x =(2)(5,3,3),T x =--(3)(1,1,1),T x =(4)(1,1,1),T x =所以方程组的解为(1,1,1)T x =。
雅可比迭代法和高斯塞德尔迭代法对比
雅可比迭代法和高斯塞德尔迭代法对比
雅可比迭代法和高斯塞德尔迭代法都是用来解决线性方程组的迭代算法。
不同之处在于,雅可比迭代法将方程组中的每个未知数都独立地迭代求解,即在每个迭代中,只使用上一次迭代中的所有未知数的初始值,而不考虑它们在这次迭代中的更新值。
这样,每次迭代都需要计算整个方程组的解,迭代的收敛速度比较慢。
而高斯塞德尔迭代法则是从第一个未知数开始进行迭代,每个未知数在这次迭代中使用已经计算出的先前未知数的更新值,并且在下一次迭代中更新自己的值。
这样每次迭代只需要计算方程组的一部分,因此迭代的收敛速度比雅可比迭代法更快。
综上所述,虽然两种方法都可以解决线性方程组的问题,但高斯塞德尔迭代法是一个更优秀的算法,具有更快的收敛速度。
jacobi迭代法原理
jacobi迭代法原理Jacobi迭代法是一种解线性方程组的方法,用于求解形如Ax=b的线性方程组。
其基本原理是通过迭代逼近的方法逐步优化解的精度,直至满足所需的精度要求。
假设我们要求解的线性方程组为n个未知数,即有n个方程。
Jacobi迭代法的关键思想是将每个未知数的解按照某种次序进行更新,并且在更新过程中以当前的解作为项的更新依据,而不是使用“全局”的解。
首先,我们将线性方程组表示为一个矩阵形式:Ax=b,其中A是n×n的系数矩阵,x是n×1的未知数向量,b是n×1的常数向量。
然后,我们将A矩阵分解为两个矩阵D和R,其中D是A的对角线矩阵,R是A去掉对角线元素后的剩余矩阵。
即A=D+R。
接下来,我们将方程组改写为迭代的形式:Dx^{(k+1)} = -R*x^{(k)} + b,其中x^{(k)}表示第k次迭代的解。
根据上述迭代公式,我们可以得到每次迭代的更新公式为x_i^{(k+1)} = (-1/D_{ii}) * (Sum(R_{ij} * x_j^{(k)}) - b_i),其中Sum表示对j的求和,i表示第i个未知数。
Jacobi迭代法的迭代过程就是根据上述更新公式,依次对每个未知数进行更新,直至解满足所需精度要求或达到最大迭代次数。
需要注意的是,为了Jacobi迭代法的收敛,系数矩阵A中的对角线元素必须非零,并且非对角线元素的绝对值之和必须小于每个对角线元素的绝对值。
总的来说,Jacobi迭代法通过逐个更新未知数的解,通过迭代逼近的方式求解线性方程组。
它的优点是易于理解和实现,但缺点是收敛速度较慢,对于大型问题可能需要较多的迭代次数。
第八节 雅可比迭代法
1)
1( 5
x1(k1)
x2( k 1)
4.2)
取 x(0)=(0,0,0)T 计算如下:
k
x1(k)
1
0.72
x2(k) 0.902
…
…
…
8 1.099998 1.199999
x3(k) 1.1644
… 1.3
上页 下页 返回
三 迭代收敛的充分条件
第三章 第八节
定理 1 在下列任一条件下,雅克比迭代法收敛。
上页 下页 返回
a i j1 ii
1
ji
时,高斯——塞德尔迭代法收敛
定义
若 | aii | | aij | ji
( i 1 , 2 , , n )
或 | a jj | | aij |
i j
( j 1 , 2 , , n )
称矩阵 A 行(或列)严格对角占优。
上页 下页 返回
第三章 第八节
定理3 若矩阵 A 行(或列)严格对角占优,则
则有x* =Bx*+f , 即x*为原方程组Ax=b 的解,B
称为迭代格式(1)的迭代矩阵。
上页 下页 返回
第三章 第八节
问题: 如何构造迭代格式,迭代法产生的 向量 序列{ x(k) }的收敛条件,收敛速度,误差估计等。
一 雅可比迭代法
设方程组
a11x1 a12 x2 a1n xn b1
Seidel 迭代法收敛。
证 A =D-L-LT , BG =(D-L) -1LT ,设 为BG 的特
征值, y 为对应的特征(复)向量,即
(D-L) -1LT y = y , LT y = (D-L) y ,则
[LT y, y ]= [ (D-L) y , y ]
类矩阵两种迭代法的收敛性比较
类矩阵两种迭代法的收敛性比较引言:在科学计算中,线性方程组的求解是很普遍的问题。
尤其是在大型科学计算中,线性方程组的求解是最重要的任务之一。
线性方程组的求解有很多种方法,例如高斯消元法、LU分解法、迭代法等等,其中迭代法是一种高效的方法。
迭代法的思想是从一个初值解开始,逐步改进解的准确度,直到满足误差要求。
在本文中,我们将讨论两种类矩阵迭代法的收敛性比较,即雅可比迭代法和高斯-赛德尔迭代法。
1.雅可比迭代法(Jacobi Iterative Method):雅可比迭代法是最简单的迭代法之一。
它是基于线性方程组的矩阵形式 Ax=b,将 A 分解成 A=D-L-U(D为A的对角线元素,L为A的下三角矩阵,U为A的上三角矩阵),其中 D 为对角线元素,L为严格下三角矩阵,U 为严格上三角矩阵。
则有如下迭代关系式: x^{(k+1)}=D^{-1}(L+U)x^{(k)}+D^{-1}b (1)其中,x^{(k)} 为 k 次迭代后的解,x^{(0)} 为初始解。
雅可比迭代法的迭代矩阵为M = D^{-1}(L+U)。
以下是雅可比迭代法的收敛性分析:定理1:若矩阵 A 为对称正定矩阵,则雅可比迭代法收敛。
证明:由于 A 为对称正定矩阵,所以存在唯一的解。
假设迭代后得到的解为 x^{(k)},则我们可以用误差向量 e^{(k)} = x-x^{(k)} 表示剩余项,则有 Ax^{(k)}-b = e^{(k)}。
对 (1) 式两边同时乘以 A^-1,得:x^{(k+1)}=x^{(k)}-A^{-1}e^{(k)}。
(2)将 (2) 式代入 Ax^{(k)}-b = e^{(k)} 中,得:Ax^{(k+1)}-b = Ae^{(k)}.(3)由于 A 为对称正定矩阵,则存在 A=Q\\Lambda Q^{-1},其中Q 为正交矩阵,\\Lambda 为对角矩阵。
因此,我们可以将 (3) 式转化为:\\| x^{(k+1)}-x \\|_{A} =\\| Q^{-1}A^{-1}Qe^{(k)}\\|_{\\Lambda} \\leq \\rho (Q^{-1}A^{-1}Q)\\|e^{(k)}\\|_{A}。
(完整版)第八节雅可比迭代法与高斯-塞德尔迭代法综述.doc
第八节 雅可比迭代法与高斯 —塞德尔迭代法一 雅可比迭代法设线性方程组Ax b(1)的系数矩阵 A 可逆且主对角元素 a 11,a 22,...,ann 均不为零 ,令D diag a 11 ,a 22 ,...,a nn并将 A 分解成AA D D(2)从而 (1) 可写成Dx D A x b令x B 1 xf 1其中 B 1I D 1 A, f 1 D 1b .(3)以B 1为迭代矩阵的迭代法(公式 )xk 1B 1 x kf 1(4)称为雅可比 (Jacobi) 迭代法 ( 公式 ), 用向量的分量来表示,(4) 为x i( k 1)1 n(j k )b ia i j xaiij 1j ii 1,2,...n,k 0,1,2,...(5)T其中 xx 1 0 ,x 20 ,...x n 0为初始向量 .由此看出 , 雅可比迭代法公式简单 , 每迭代一次只需计算一次矩阵和向量的乘法. 在电算时需要两组存储单元 , 以存放 x k及 x k 1 . 例1例1 用雅可比迭代法求解下列方程组10 x 1x 2 2x 3 7.2x 1 10x 22x 3 8.3x 1x 2 5x 34.2解将方程组按雅可比方法写成x 10.1x 20.2x 3 0.72 x 2 0.1x 1 0.2x 30.83x 30.2x 10.2x 20.84取初始值 xx 1 0 ,x 20 , x 3 0TT0,0,0, 按迭代公式x 1 k 10.1x 2 k0.2x 3k 0.72 x 2k 1 0.1x 1 k0.2x 3 k0.83 x 3k 1 0.2x 1 k 0.2x 2k0.84进行迭代,其计算结果如表1 所示表 1k 0 1 2 34 56 7x 1 k 00.720.9711.0571.08531.09511.0983x 2 k0.831.0701.157 1.18531.19511.19831x 3 k0.841.1501.248 1.28281.29411.29802二 高斯 — 塞德尔迭代法由雅可比迭代公式可知 , 在迭代的每一步计算过程中是用x k的全部分量来计算xk 1 的所有分量 , 显然在计算第 i 个分量 x ik 1时 , 已经计算出的最新分量 x 1 k 1 ,...,x i 1 k 1 没有被利 用,从直观上看 , 最新计算出的分量可能比旧的分量要好些. 因此,对这些最新计算出来的第 k 1的分量 xjk 1加以利用 , 就得到所谓解方程组的高斯— 塞德( Gauss-Seidel )次近似 xk 1迭代法 .把矩阵 A 分解成A DL U(6)其中Ddiag a 11 ,a 22 ,...,a nn,L , U分别为 A 的主对角元除外的下三角和上三角部分 , 于是 , 方程组 (1) 便可以写成DL x Ux b即x B 2 x f 2其中B 2 D L 1f 2U , 以B 2为迭代矩阵构成的迭代法( 公式 )xk1B x kf1D L b(7)2 2称为高斯 — 塞德尔迭代法 ( 公式 ), 用 量表示的形式为x i( k 1 )1i 1(j k 1 )b ia ij x n(8)a ij x (j k )a iij1j i 1i 1,2,n,k 0,1,2,...(9)由此看出 , 高斯 — 塞德尔迭代法的一个明显的优点是 , 在电算时 , 只需一组存储单元 ( 计算出k 1kk 1kx i后 x i 不再使用 , 所以用 x i 冲掉 x i, 以便存放近似解 .例 2 例 2 用高斯 —— 塞德尔迭代法求解例 1.取初始值x 0x 1 0 ,x 20 , x 3T解0,0,0, T,按迭代公式x 1 k 10.1x 2k0.2x 3 k 0.72 x 2k 1 0.1x 1 k 10.2x 3k0.83x 3 k 1 0.2x 1 k 10.2x 2 k 10.84进行迭代,其计算结果如下表2表 2k0 1 23456 7 x 1 k0.721.04308 1.093 1.099131.099891.099991.113x 2 k0.902 1.167191.1951.199471.199931.199991.272x 3 k1.164 1.28205 1.2971.299721.299961.31.3477从此例看出 , 高斯 — 塞德尔迭代法比雅可比迭代法收敛快( 达到同样的精度所需迭代次数少 ), 但 这个结论 , 在一定条件下才是对的 , 甚至有这样的方程组 , 雅可比方法收敛,而高斯 — 塞德尔迭代法却是发散的 .三 迭代收敛的充分条件定理 1在下列任一条件下, 雅可比迭代法 (5) 收敛 .B 1 max na ij1a iiij j1i①;B 1naij11maxaiiji 1②j i;I D 1ATmax naij1ji 1 a jj③i j定理 2设 B 1,B 2 分别为雅可比迭代矩阵与高斯 — 塞德尔迭代矩阵 , 则B 2B 1(10)从而,当B1naij1maxa iiijj 1i时,高斯 — 塞德尔迭代法 (8) 收敛 .证明由 B 1,B 2的定义 ,它们可表示成B 1D 1 L UB 21D L 1U I D 1L D 1U用 e 表示 n 维向量e1,1,...,1 T , 则有不等式B 1 e B 1 eB 1D 1 LD 1U这里 , 记号|·|表示其中矩阵的元素都取绝对值, 而不等式是对相应元素来考虑的, 于是D 1U eB 1 D 1L eID 1 L1B 1Ie容易验证nnD 1LD 1 L所以,ID1L 及ID 1L 可逆,且ID 1L 1I D 1 L ...n 1D 1 LID 1 Ln11... D 1LI D 1LID 1L1I从而有B 2 e ID 1L 1D 1U eID 1L1I D 1L 1 B I e1I1 B 1IID 1 L 1eB 1 e因此必有B 2B 1因为已知B 1 1所以 B 2 1 .即高斯 — 塞德尔迭代法收敛 .若矩阵 A 为对称,我们有 定理 3 若矩阵 A 正定 , 则高斯 — 塞德尔迭代法收敛 . 证明把实正定对称矩阵 A 分解为A D LL TUL T, 则 D 为正定的 , 迭代矩阵B 2D L 1 L T设 是B 2的任一特征值 , x 为相应的特征向量 , 则D L 1xxL T以 D L 左乘上式两端 , 并由 A D L L T 有1 L T x Ax 用向量 x 的共轭转置左乘上式两端 , 得1x T L T xx T Ax(11)求上式左右两端的共轭转置, 得1x T L x x T Ax以1和1分别乘以上二式然后相加, 得1 1 x T L TL x2x T Ax由 AD L L T ,得11x T D A x2x T Ax即221x T L x1x T Ax(12)因为 A 和 D 都是正定的 , 且 x 不是零向量 , 所以由 (11) 式得1, 而由 (12) 式得12, 即1, 从而B 21, 因而高斯 — 塞德尔迭代法收敛 .定义 1 设 Aa ijn n为 n 阶矩阵 .① ①如果na ij ,i 1,2,...na iij ij i(13)即 A 的每一行对角元素的绝对值都严格大于同行其他元素绝对值之和, 则称 A 为严格对角优势矩阵.② ②如果na ij ,aiii 1,2,...nj ij i且至少有一个不等式严格成立 , 则称 A 为弱对角优势矩阵 .2 1 0 1 1 0 13 1 1 2 1例如13 是严格对角优势矩阵,13 是弱对角优势矩阵 .A 11A 12定义 2设 A a ijn n是 n 阶矩阵,如果经过行的互换及相应列的互换可化为 0A22,即存在 n 阶排列矩阵 P, 使P T APA 11 A 120 A 22其中A 11,A22 为方阵,则称A 是可约的 , 否则称 A 为不可约的 .A 是可约矩阵 , 意味着Ax b 可经过若干次行列重排, 化为两个低阶方程组 ,事实上 ,Ax b 可化为 P T AP P T x P T b , 记P T y1 , d x y2 P T b dy d12于是,求解 Ax b 化为求解 A 11 y1A 12 y2 dA 22 y 2d1 2可以证明 , 如果 A 为严格对角优势矩阵或为不可约弱对角优势矩阵 , 则 A 是非奇异的 .定理 4 如果 A 为严格对角优势矩阵或为不可约弱对角优势矩阵, 则对任意 x 0 , 雅可比迭代 法(4) 与高斯 — 塞德尔迭代法 (8) 均为收敛的 .证明 下面我们以 A 为不可约弱对角优势矩阵为例, 证明雅可比迭代法收敛, 其他证明留给 读者 .要证明雅可比迭代法收敛,只要证 B 11,B 1是迭代矩阵 .用反证法 , 设矩阵B 1有某个特征值, 使得1, 则 det IB 10,由于 A 不可约,且具有弱对角优势,所以D 1 存在,且I B 1IID 1AD 1D A D从而det D A D另一方面,矩阵DAD与矩阵 A 的非零元素的位置是完全相同的,所以D AD也是不可约的 , 又由于1, 且 A 弱对角优势,所以na iia iia ij ,i 1,2,...nj ij i并且至少有一个 i 使不等号严格成立. 因此 , 矩阵D AD弱对角优势,故DA D为不可约弱对角优势矩阵 . 从而det D A D 0矛盾,故B1的特征值不能大于等于1,定理得证 .。
第八节 雅可比与高斯—塞德尔迭代法.ppt
建 立 迭 代 格
x
( k 1) 1
1 a 11
(
a
12
x
(k 2
)
a
13
x
(k 3
)
a
1n
x
(k) n
b1
)
x
( k 1) 2
1 a 22
(a
21
x
( k 1) 1
a
23
x
(k 3
)
a
2n
x
(k) n
b2
)
式
x
( k 1) n
1 a nn
(a
n1
x
(k 1
1)
a
n
n1
x
( k 1) n1
x2(k)
取
1 0.72
0.83
x3(k) 0.84
x(0) (0,0,0)T 2 0.971
1.07
1.15
计算如下
……
…
…
11 1.099993 1.199993 1.299991
12 1.099998 1.199998 1.299997
数学学院 信息与计算科学系
例2 用Gauss—Seidel 迭代法解上题。
B2 = BG =(D-L)-1U
数学学院 信息与计算科学系
例如 已知线性方程组 Ax=b 的矩阵为
A
2 1
1 1.5
其G-S迭代矩阵为
BG ( D L)1U
2 1
01 0
3 2
0
1 0
1 3
3 2
1
0 0 2 0
1 0
0 0
1 2
1 3
雅克比迭代法
雅克比迭代法马来西亚雅克比迭代法(Marey Jacobs Iterative Method)是一种功能最优化的数值分析方法,又称无约束最优化算法,其目的是找到函数最优值,这是一种全局最优解法,可以有效求解多变量非线性方程和非凸优化问题。
1. 雅克比迭代法的概念雅克比迭代法是数值分析方法的一种,他可以搜索多变量非线性函数的最优值。
该方法的核心思想是:在每次迭代中,通过计算函数的梯度(或偏导数)来找到新的最优值,以及搜索方向。
它基于雅克比矩阵求解多元非线性方程组,需要迭代计算,来自动找到变量最优值点,比如从一个初始点开始,沿着局部函数增加最快的方向,一直搜索到某一程度,就可以得到全局最优结果。
2. 雅克比迭代法的特点①雅克比迭代法可以基于非凸优化,这就使得在多元变量函数中找到最优解更加容易。
②它的收敛速度极快,一般只需一定的迭代周期就可以解出比较精确的解。
③雅克比迭代法具有很大的数值稳定性,它可以适应多元函数的各种变化而取得精确的结果。
3. 雅克比迭代法的应用(1)雅克比迭代法可以用于非线性最优化,用于非线性方程组和非凸优化问题。
(2)它可以用于解决多元、非线性优化问题,特别是在功能最优化技术中经常应用。
(3)它广泛应用于多目标最优化,在这种问题中,可以使用雅可比迭代法来求解最优值。
(4)它可以有效地解决期望、约束类优化问题,其中,约束可以通过增加惩罚函数的系数来改变。
4. 雅克比迭代法的缺点(1)雅可比迭代法的最佳初值特征和求解准确度有较大的依赖,这意味着对于不同的情况,要使用不同的参数,这就耗费了较多的时间;(2)雅可比迭代法因为受函数从原点出发的假定条件,所以只能较不理想的收敛到局部最优解,而不能较好的收敛到全局最优解;(3)雅可比迭代法实现起来较为复杂,对于复杂的非凸优化问题,往往可能导致求解的困难;(4)雅可比迭代法有一定的假定条件,一旦这些假定发生变化,那么最终计算出的结果就可能发生改变。
雅可比迭代法
雅可比迭代法一、引言雅可比迭代法,也称为雅可比算法(Jacobi method),在科学计算领域中应用很广泛,本文重点讲述该算法在迭代进化计算中的应用。
20世纪40年代初,由美国数学家Jacobi和瑞士数学家可夫等人创造。
雅可比迭代法主要步骤如下: 1、初始化; 2、选择一种迭代策略; 3、按照迭代策略执行相应的操作,直至收敛; 4、调整参数使迭代过程收敛,得到最终的收敛速度。
下面将详细介绍这个方法的原理及过程。
1、初始化“雅可比”是一个美国人,因此他不会使用编程来实现自己的想法,但是他对于迭代法非常了解,曾经使用编程来解决两个公开的问题,一个是阿基米德与公元前250年的欧几里德的问题,另一个是荷兰金属铸件需要多少时间来铸成一个合金块。
他研究过可以提高计算效率的任何技术。
20世纪30年代初, Jacobi发现一些只能运行到第n次的迭代法并没有提供尽可能快的收敛速度。
因此,他决定编写一个运行到第n+1次的迭代法,通过检查某种程序的输入输出情况,就可以预测当前执行到哪一步。
2、选择一种迭代策略在给定初始条件,一共有m次迭代,该迭代法一定满足下列条件之一:直到十年后的1973年, Jacobi在美国数学学会会议上才正式提出了雅可比算法(Jacobi algorithm),而且仅仅限于这个算法本身,并没有对它加以推广,由此可见, Jacobi选择这样一种渐进的发展策略,也许是出于性格上的稳健吧。
3、按照迭代策略执行相应的操作如果你想设计一种运行到第n+1次的迭代法,那么你要选择使计算复杂度为O(n^n)。
的策略(L(n))。
注意(1)此处的复杂度是以数字的形式来表示的;(2)它是针对每一次迭代的计算复杂度。
然后再选择一个初值使函数值在第m次迭代时满足O(n^m)。
3、调整参数使迭代过程收敛,得到最终的收敛速度雅可比迭代法一般情况下,迭代算法的目标函数不收敛,就需要对参数进行调整,而使算法收敛,如果把迭代速度函数和梯度算法进行比较,就可以知道梯度算法存在算法收敛性问题,而雅可比迭代法是满足这一要求的。
雅可比迭代法和高斯超松弛迭代
雅可比迭代法分量形式(63)式也可改写为
(64)
(64)式更方便于编程求解。
雅可比迭代法公式简单,迭代思路明确。每迭代一次只需计算n个方程的向量乘法,程序编制时需设二个数组分别存放xk和xk+1便可实现此迭代求解。
2、高斯-赛德尔(Gauss-seidel)迭代法
由雅可比迭代法可知,在计算xk+1的过程中,采用的都是上一迭代步的结果xk。考察其计算过程,显然在计算新分量xik+1时,已经计算得到了新的分量, 。有理由认为新计算出来的分量可能比上次迭代得到的分量有所改善。希望充分利用新计算出来的分量以提高迭代解法的效率,这就是高斯-赛德尔迭代法(简称G-S迭代法)对(64)式进行改变可以得到G-S迭代法的分 量形式
(75)
其中ω称为松弛因子。
式(75)是迭代公式(74)的一个改进,可以选择松弛因子ω加速迭代过程的收敛。 式(75)的分量形式为
(76)
若对上述改进的迭代公式,按高斯-赛德尔迭代法尽量利用最新迭代得到的分量的原则,又可得到新的迭代公式
(77)
当线性方程组的系数矩阵A具有非零主元(aii≠0,i=1,2,3,…n)的特点时,可 以得到主元为1的方程组形式
雅可比迭代法和高斯-赛德尔迭代法以及超松弛迭代
对于给定的方程 用下式逐步代入求近似解的方法称为迭代法。如xk(当 )的极限存在,此极限即方程组的真正解,此迭代法收敛,否则称迭代法收敛。
1、雅可比(Jacobi)迭代法
设有方程组
Ax=b (56)
其展开形式为
(57)
系数矩阵A为非奇异阵,且 (i=1-n)A可分解为
高斯-赛德尔迭代的矩阵形式可表达为
(69)
高斯-赛德尔迭代法每步迭代的计算量与雅可比迭代相当,但在计算机进行计算时,只需存放x一个数组。
雅可比(Jacobi)迭代法
0 a21 A a31 an1
0 a32
an2
0
ann1
a11 0
a22
0
ann
a12 0
a13 a23 0
a1n
a2n
an1n
0
记作 A = L + D + U
则 Ax b 等价于 (L D U )x b
数值计算方法
雅可比(Jacobi)迭代法
1.1雅可比迭代法算法构造
例4.2 用雅可比迭代法求解方程组
8x1 3x2 2x3 20 4x1 11x2 x3 33 6x1 3x2 12x3 36
解建:立从迭方代程公组式的三个方程中分离出 x1, x2 和 x3
x1x( k 11) xxxx32(( kk 3211))
B (I D 1 A) f D 1b
x (k 1) Bx (k ) f (k = 0,1,2…)
称为雅可比迭代公式, B称为雅可比迭代矩阵
其中
0
B
(I
D 1 A)
a21 a22
an1
ann
a12 a11
0
an2
ann
a1n a11
a2n
a22
0
在例4.2中,由迭代公式写出雅可比迭代矩阵为
i 1,2,, n
若上xia(式xkiii1称)0为ja(1解a1i1iiii方((1bb,程2ii , 组jj的,njnn1i )1Ja,aaijc分xijo(xjbk离i)j)迭)出代变i公i量式1,。21x,,2i , n , n ji
1.2 雅可比迭代法的矩阵表示
设方程组 Ax b 的系数矩阵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 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,定理得证.。
雅可比(Jacobi)迭代法
高斯赛德尔迭代矩阵BG一般不容易计算,所以实际使用 时采用分量形式的算法,参见程序 GaussSeidelit2.m
例子:p.55(p.52)例8 ,10-3的精度,迭代6 次。
3x1x12xx22
5 5
x(k 1) 1
x(k) 2 3
x(k) i
(bi
a x( k1) ij j
aij
x
( j
k
)
)
/
aii
j 1
ji
不同的 的值会影响SOR迭代的收敛性、收敛 速度。
20
例(7)SOR迭代法
8 3 2 A 4 11 1
6 3 12
取 =1.5,则迭代矩阵:
1 / 2 9 / 16
3 / 8
B 3 /11 71/ 88 15 / 44
|| B || 20, || B ||1 17, || B ||2 14.4, (B) 13
不收敛。
14
(2)简单构造迭代法-2
8x1 3x2 2x3 20 4x1 11x2 x3 33 6x1 3x2 12x3 36
2
3
4x1 20 4x1 3x2 2x3
9x2 33 4x1 2x2 x3
举例:
8 4
x1 x1
3x2 2x3 11x2 x3
20 33
6 x1 3 x2 12x3 36
精确解
3 2 1
13
(1)简单迭代法
8 3 2 7 3 2 B I A I 4 11 1 4 10 1
6 3 12 6 3 11 20 b' 33 36
SOR迭 代( 1.3545), 17次 , (B) 0.452847
雅克比迭代法和高斯-塞德尔迭代法(经典实用)
雅克比迭代法和高斯-塞德尔迭代法(经典实用)雅克比迭代法和高斯-塞德尔迭代法都是求解线性方程组的经典方法,它们的基本思路是将矩阵分解为对角、上三角或下三角矩阵,然后通过迭代求解方程组。
以下将详细介绍这两种方法的原理和实现。
1. 雅克比迭代法雅克比迭代法是一种通过逐步迭代来求解线性方程组的方法。
假设有一个n*n的线性方程组Ax=b,其中A是一个对称正定矩阵。
将A分解为对角矩阵D、上三角矩阵U和下三角矩阵L的乘积,即A=D-L-U。
则可得到方程组的迭代格式如下:X_(k+1)=D^(-1)(L+U)X_k+D^(-1)b其中X_k为第k次迭代的解向量,D为A的对角矩阵,L为A的下三角矩阵,U为A的上三角矩阵。
雅克比迭代法的收敛条件为,当矩阵A是对称正定矩阵时,若其对角线元素都不为0,则Jacobi迭代法收敛。
此外,当矩阵A为对称正定矩阵时,雅克比迭代法还具有收敛速度快、实现简单等优点。
2. 高斯-塞德尔迭代法高斯-塞德尔迭代法是雅克比迭代法的改进。
其思路是每次计算时,直接用已知的最新值来更新解向量中未知量的值,从而加快迭代的速度。
具体来说,设有一个n*n的线性方程组Ax=b,方程组的迭代格式为:X_i+1= (b_i-a_i,i*X_i+1-a_i,i+1*X_i,+...-a_i,n*X_n) /a_i,i其中i表示求解方程组的第i个未知量,它的值是通过其他已知量的最新值来计算的。
3. 实用在实际应用中,雅克比迭代法和高斯-塞德尔迭代法在求解某些特定的线性方程组时往往比直接求解更具有优势。
例如,在求解非常大型的线性方程组时,直接求解的计算量很大,求解时间也很长。
而使用迭代法则可以大幅减少计算量和求解时间,提高求解效率。
此外,由于迭代法可以直观地呈现方程组的解向量随着迭代步数的变化情况,因此可以更快地检查迭代结果的趋势和误差范围。
总之,雅克比迭代法和高斯-塞德尔迭代法是求解线性方程组的两种有效方法,具有应用广泛、易于实现和迭代收敛速度快的优点。
基于雅可比矩阵的迭代求解逆解原理
基于雅可比矩阵的迭代求解逆解原理
迭代法是一种数值解法,在求解某些复杂问题时非常有效。
基于雅可比矩阵的迭代法是其中一种常见的求解逆解原理。
雅可比矩阵,又称为雅可比矩阵(Jacobian matrix),是由一组偏导数构成的矩阵。
在数学和物理问题中,雅可比矩阵常常用于描述一个多变量函数的局部变化情况。
迭代法的目的就是通过不断迭代雅可比矩阵,逼近解方程的根或逆解。
基于雅可比矩阵的迭代法的原理是将原问题转化为一个新的等价问题,通过迭代求解逐步逼近真实解。
具体步骤如下:
1. 根据原问题的表达式,构建雅可比矩阵。
雅可比矩阵的每个元素都是原函数的偏导数。
2. 初始化一个初始解作为迭代的起点。
3. 根据雅可比矩阵和当前解的值,计算新的解。
这一步可以使用线性代数中的方法进行计算,例如,使用高斯-塞德尔迭代法。
4. 检查新的解与之前的解之间的差异是否达到了预设的精度要求。
如果达到,迭代结束,得到最终的逆解;否则,将新的解作为当前解,返回第3步。
基于雅可比矩阵的迭代法的优点是容易理解和实现。
然而,因为迭代法是一种近似解法,所以收敛速度可能较慢。
此外,在某些问题中,雅可比矩阵可能存在奇异性或近似奇异性,导致迭代法不能得到有效的结果。
总而言之,基于雅可比矩阵的迭代法是一种常见的数值解法,可用于求解逆解问题。
它的原理是通过迭代逼近解方程的根或逆解,但在实际应用中需要注意其收敛性和奇异性等问题。
数值分析-雅克比迭代法
数值分析-雅克⽐迭代法雅克⽐迭代法雅克⽐迭代法就是众多迭代法中⽐较早且较简单的⼀种,其命名也是为纪念普鲁⼠著名数学家雅可⽐。
雅克⽐迭代法的计算公式简单,每迭代⼀次只需计算⼀次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,⽐较容易并⾏计算。
迭代过程⾸先将⽅程组中的系数矩阵A分解成三部分,即:A = L+D+U,如图1所⽰,其中D为对⾓阵,L为下三⾓矩阵,U为上三⾓矩阵。
之后确定迭代格式,X^(k+1) = B*X^(k) +f ,(这⾥^表⽰的是上标,括号内数字即迭代次数),如图1所⽰,其中B称为迭代矩阵,雅克⽐迭代法中⼀般记为J。
(k = 0,1,…)再选取初始迭代向量X^(0),开始逐次迭代。
收敛性设Ax= b,其中A=D+L+U为⾮奇异矩阵,且对⾓阵D也⾮奇异,则当迭代矩阵J的谱半径ρ(J)<1时,雅克⽐迭代法收敛优缺点雅克⽐迭代法的优点明显,计算公式简单,每迭代⼀次只需计算⼀次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,⽐较容易并⾏计算。
然⽽这种迭代⽅式收敛速度较慢,⽽且占据的存储空间较⼤例题程序算法#include<math.h>#include<stdio.h>#include <stdlib.h>int main(){float e =0.001, z, m, y[3]; float b[3]={-12, 20, 3};float x[3]={0);float a[3][3]={{5, 2, 1},{-1, 4, 2},{2, -3, 10}};int n =3, j, i, k =1;while(1){for(i=0;i<3;i++){for(j=0;j<3;j++)m=m+a[i][j]*x[j];m = m - x[i] * a[i][i]; y[i]=(b[i] - m) / a[i][i]; m =0;}i =0;while(i <3){z = fabs(x[i] - y[i]);if(z > e)break;i++;}if(i !=3){for(i =0; i <3; i++)x[i]= y[i];k++;}else if(i ==3)break;}printf("%f\n%f\n%f\n", y[0], y[1], y[2]);return0;}1求解⽅程:8 * x1 - 3 * x2 + 2 * x3 =204 * x1 - 11 * x2 - x3 =336 * x1 + 3 * x2 + 12 * x3 =36精确解:x1 =0.411817, x2 = -3.176429, x3 =3.588173 --->迭代公式:x1^(k+1)=(3 * x2^(k) - 2 * x3^(k) + 20) / 8;x2^(k+1)=(-4 * x1^(k) + 1 * x3^(k) + 33) / (-11); x2^(k+1)=(-6 * x1^(k) - 3 * x2^(k) + 36) / 12; */#include <stdio.h>#include <stdlib.h>struct X {float x1;float x2;float x3;};X jcobi(X&v){X r;r.x1 =(3 * v.x2 - 2 * v.x3 + 20) / 8;r.x2 =(-4 * v.x1 + v.x3 + 33) / (-11);r.x3 =(-6 * v.x1 - 3 * v.x2 + 36) / 12;return r;}void main(){X v={0,0,0};int iteration =20;while(iteration-- >0){v= jcobi(v);v= jcobi(v);}printf("%f\n%f\n%f\n", v.x1, v.x2, v.x3); }。
8.1雅可比、赛德尔迭代
8.1.4 8.1.4 赛德尔迭代法的矩阵表示
为研究上述两种迭代法的收敛性,先将各迭 代格式改写为矩阵代格式改写为矩阵-矢量形式。
设
a11 D= a22
⋱
0 − a 0 21 , L = ⋮ ⋱ − an1 − an 2 ⋯ − an ,n −1 0 ann
12
8.1.2 赛德尔迭代法的计算格式
其迭代公式为:
( ( ( x1 ( k +1) = (− a12 x 2k ) − a13 x3k ) − ⋯ − a1n x nk ) + b1 ) / a11 ( k +1) ( ( = (− a 21 x1( k +1) − a 23 x3k ) − ⋯ − a 2 n x nk ) + b2 ) / a 22 x2 ⋯⋯⋯⋯ x ( k +1) = (−a x ( k +1) − a x ( k +1) − ⋯ − a x ( k +1) + b ) / a n1 1 n2 2 nn −1 n −1 n nn n
8.1.1 雅可比迭代法的计算格式
为求线性代数方程组(8-1)的解,可将 为求线性代数方程组(8-1)的解,可将 方程组(8-1)改写 方程组(8-1)改写为等价方程组 改写为等价方程组
x1 = (−a12 x2 − a13 x3 − ⋯ − a1n x n + b1 ) / a11 x = (−a x − a x − ⋯ − a x + b ) / a 2 21 1 23 2 2n n 2 22 ⋯⋯⋯⋯ xn = (− an1 x1 − an 2 x2 − ⋯ − ann −1 xn −1 + bn ) / ann
雅可比迭代法,高斯迭代法,松弛迭代法
10 1
10 2
5
同样取初始向量x(0)=(0,0,0)T, 计算结果为
k
x1(k)
0
0
x2(k) 0
x3(k) 0
‖x(k)-x*‖
1
1
1.4
0.78
1.026
0.4
2 1.0634 1.02048 0.987516 0.0634
3 0.9951044 0.99527568 1.00190686 0.0048956
0
若记 g ( b1 , b2 ,, bn )T ,则J迭代法可写成
a11 a22x(k+1a)=nnBx(k)+g
k=0,1,2,…
§3.2.2 高斯-赛德尔 (Gauss-Seidel) 迭代法
若在J迭代法中,充分利用新值, 则可以得到如下的迭
代公式
x1(
k
x1(
k
1)
a12 a11
x(k) 2
a13 a11
x(பைடு நூலகம்) 3
a1n a11
x(k) n
b1 a11
x
(k
2
1)
a21 a22
x(k) 1
a23 a22
x(k) 3
a2n a22
x(k) n
b2 a22
方程组的精确解为x*=(1,1,1)T.
解 J迭代法计算公式为
x (k 1) 1
3 10
x(k) 2
x 1 (k ) 10 3
雅可比迭代矩阵公式
雅可比迭代矩阵公式雅可比迭代矩阵公式是一种解决线性方程组的方法,特别适用于大规模矩阵。
它的核心思想是通过不断迭代,逐步逼近方程组的解。
本文将详细介绍雅可比迭代矩阵公式的原理和应用。
一、原理考虑一个线性方程组Ax=b,其中A是一个n×n的矩阵,b是一个n维向量,x是我们要求解的n维向量。
雅可比迭代矩阵公式的核心思想是将矩阵A分解为A=D-L-U的形式,其中D是A的对角线元素组成的对角矩阵,L是A的下三角部分(不包括对角线),U是A的上三角部分(不包括对角线)。
则原方程可以改写为(D-L-U)x=b,移项得Dx=(L+U)x+b。
由于D 是一个对角矩阵,容易求逆,故可以得到x=D-1(L+U)x+D-1b。
接下来,我们可以使用迭代的方式来逐步逼近x的解。
具体来说,我们可以从一个初始的估计值x0开始,每次迭代都使用上一次的估计值,按照下面的公式求解:xn+1 = D-1(L+U)xn + D-1b迭代直到收敛,即xn+1-xn的范数小于某个给定的容差值时,我们可以认为x已经收敛,即为Ax=b的解。
二、应用雅可比迭代矩阵公式特别适用于大规模矩阵的求解,因为它只需要存储矩阵A的对角线元素和一些中间结果,而不需要存储整个矩阵。
这使得雅可比迭代矩阵公式在处理大型稀疏矩阵时具有很大的优势。
雅可比迭代矩阵公式还可以用于求解特殊的矩阵,比如对称正定矩阵。
在这种情况下,我们可以使用共轭梯度法等更高效的算法,但雅可比迭代矩阵公式仍然是一个有用的参考。
三、总结雅可比迭代矩阵公式是一种简单而有效的解决线性方程组的方法,特别适用于大规模稀疏矩阵。
它的核心思想是通过迭代,逐步逼近方程组的解。
虽然它不如一些更高效的算法,但在某些情况下,它仍然是一个有用的工具。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)
a22
, L =- ann
0 a21 a31 an1 0 a32 an 2 0 an ,n 1
0
0 U =-
a12 0
a13 a23
x 0 初始向量, k 1 B0 x k f , x
其中 B0 称为雅可比方法迭代矩阵。
二、算法框图
开始
输入 x0:;
开始迭代for(k=0; k<m; ++k)
false
for(i=0; i<n; ++i)
true
for(j=0; j<n; ++j)
true
2013-2014(1)专业课程实践论文
题目:雅可比迭代法
一、算法理论
设有方程组 aij x j bi (i 1,2..., n),
j 1 n
记作 Ax b,
A 为非奇异阵且 aij 0(i 1,2,..., n), 将 A 分裂为 A D L U ,其中
a11 D=
(2)
简记作 其中
x B0 x f ,
B0 I D 1 A D 1 L U , f D 1b.
对方程组(2)应用迭代法,得到解式(1)的雅可比迭代公式
x 0 x 0 , x 0 ,... x 0 t 初始向量, 1 2 n n 1 k 1 k bi aij x j , xi aii i 1 j i
if(j!=i)
false true tempห้องสมุดไป่ตู้= temp + a[i][j]*frovalue[j]; false
x[i] = ( b[i] - temp ) / a[i][i];
结束
三、算法程序
#include "stdlib.h" #include "stdio.h" #include "conio.h" #include "string.h" #include "math.h" #define N 100 void Table(int n,float a[N][N],float b[N]) { int i,j; float c[N][N]; printf("Please input the matrix A by row!\n"); for(i=0;i<n;i++) { printf("Row %d:",i+1); for(j=0;j<n;j++) scanf("%f",&a[i][j]); } printf("Please input the vector b:"); for(i=0;i<n;i++) scanf("%f",&b[i]); for(i=0;i<n;i++) for(j=0;j<n;j++) { if(i==j) { c[i][j]=0; continue; } c[i][j]=-a[i][j]/a[i][i]; } printf("\nThe matrix A and vector b:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%10.5f",a[i][j]); printf("%10.5f",b[i]); printf("\n");
0
a1n a2 n an 1,n 0
将式(1)第 i(i 1,2....n) 个方程用 aii 去除再移项,得到等价方程组
1 xi aii n bi aij x j i 1,2,..., n , j 1 j i
} printf("\nThe Jacobi iterative scheme:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) printf("%10.5f",c[i][j]); printf("%10.5f",b[i]/a[i][i]); printf("\n"); } } void init_vec(int n,float x[N]) { int i; printf("Please input the initial iteration vector x:"); for(i=0;i<n;i++) scanf("%f",&x[i]); printf("\nThe initial iteration vector x:\n"); for(i=0;i<n;i++) printf("%10.5f",x[i]); printf("\n"); } void jacobi(int n,float a[N][N],float b[N],float x[N]) { int i,j,k; float tmp,x2[N]; for(k=0;;k++) { for(i=0;i<n;i++) x2[i]=x[i]; for(i=0;i<n;i++) { tmp=0.0; for(j=0;j<n;j++) { if(j==i) continue; tmp+=a[i][j]*x2[j]; } x[i]=(b[i]-tmp)/a[i][i];
(3)
其中 x k x1k , x2k ,... xnk , 为第 k 次迭代向量。设 x k 已经算出,由式(3)可
T
k 1 计算下一次迭代向量 x k 0,1,2,...; i 1,2,..., n ,
显然迭代公式(3)的矩阵形式为
} for(i=0,j=0;i<n;i++) if(fabs(x2[i]-x[i])<0.00001) j++; if(j==n) { printf("\nThis Jacobi iterative scheme is convergent!\n"); printf("Number of iterations: %d",k+1); break; } if(k==499) { printf("\nThis Jacobi iterative scheme may be not convergent!"); break; } } printf("\nThe results:\n"); for(i=0;i<n;i++) printf("%12.7f",x[i]); } int main() { int n; float x[N],a[N][N],b[N]; printf("Input n:"); scanf("%d",&n); Table(n,a,b); init_vec(n,x); jacobi(n,a,b,x); getch(); return 0; }