矩阵雅克比迭代算法

合集下载

雅可比迭代法预处理

雅可比迭代法预处理

雅可比迭代法是一种常用于求解线性方程组的迭代方法。

它通过不断迭代来求解方程组的解。

在使用雅可比迭代法之前,我们需要对方程组进行一些预处理,以便使用这种方法求解。

首先,我们需要将方程组化为如下的形式:
Ax = b
其中A 是系数矩阵,x 是未知向量,b 是常数向量。

然后,我们需要确定一个初始猜测解x0,作为迭代的起点。

这个初始猜测解可以是任意的,但是如果能够选择一个较好的初始猜测解,则可能会使迭代收敛得更快。

最后,我们需要选择一个迭代系数,这个系数决定了新的猜测解与旧的猜测解之间的关系。

一般来说,如果选择的迭代系数越小,则迭代收敛得越慢,但是收敛得更稳定;如果选择的迭代系数越大,则迭代收敛得越快,但是收敛得更不稳定。

这就是雅可比迭代法的预处理过程。

第八节 雅可比迭代法

第八节   雅可比迭代法

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}。

雅可比式计算方法

雅可比式计算方法

雅可比式计算方法雅可比式计算方法是一种用于解决线性方程组的数值方法,它是数值分析中非常重要的内容之一。

雅可比法是一种迭代法,通过不断迭代计算可以逼近线性方程组的解。

在实际工程问题中,线性方程组的解往往是非常复杂的,而雅可比法可以通过简单的迭代计算得到比较精确的解,因此在工程领域得到了广泛的应用。

首先,我们来看一下线性方程组的一般形式:\[Ax = b\]其中,A是一个n阶矩阵,x和b是n维向量。

我们的目标是求解向量x,使得等式成立。

雅可比法的基本思想是通过不断迭代计算得到向量x的逼近解。

接下来,我们来介绍雅可比法的具体计算步骤。

首先,我们将矩阵A分解为三部分:\[A = D + L + U\]其中,D是A的对角线元素构成的对角矩阵,L是A的严格下三角部分,U是A的严格上三角部分。

则原方程组可以表示为:\[Dx = (L + U)x b\]接下来,我们将原方程组改写为迭代格式:\[x^{(k+1)} = D^{-1}[(L + U)x^{(k)} b]\]其中,k表示迭代的次数,\(x^{(k)}\)表示第k次迭代得到的解。

通过不断迭代计算,我们可以逼近方程组的解。

雅可比法的收敛条件是当且仅当矩阵A是严格对角占优矩阵或对称正定矩阵时,迭代序列收敛。

在实际应用中,我们可以通过计算矩阵A的谱半径来判断雅可比法的收敛性。

需要注意的是,雅可比法的收敛速度较慢,尤其是对于病态矩阵或条件数较大的矩阵,迭代次数可能会非常多。

因此,在实际应用中,我们往往会结合其他的迭代方法,如高斯-赛德尔迭代法、超松弛迭代法等,来加快迭代收敛速度。

总的来说,雅可比法是一种简单而有效的线性方程组迭代解法。

通过不断迭代计算,可以逼近方程组的解,得到比较精确的结果。

在实际工程问题中,雅可比法有着广泛的应用价值,能够帮助工程师解决复杂的线性方程组计算问题。

希望本文对您理解雅可比式计算方法有所帮助,谢谢阅读!。

(完整版)第八节雅可比迭代法与高斯-塞德尔迭代法综述.doc

(完整版)第八节雅可比迭代法与高斯-塞德尔迭代法综述.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,定理得证 .。

38第八节 雅可比与高斯—塞德尔迭代法

38第八节 雅可比与高斯—塞德尔迭代法
| aii | | aij | | aij |
ji j 1 i 1 j i 1
| aij |
n
( i 1 , 2 , , n )
数学学院 信息与计算科学系
数学学院 信息与计算科学系
由 ② 下面证明Gauss—Seidel 迭代法收敛. BG ( D L) 1U ,得
det( I BG ) det[ I ( D L) 1U ]
1
det[( D L) ] det[ ( D L) U ] 0
det[ ( D L) U ] 0 (1) 这说明(D-L)-U是奇异矩阵. 下面证明| |<1. 若不然, 即有 使| |1, 则
0 a21 1 BJ D ( L U ) a 22 a n1 a nn
a12 a11 0 an 2 ann
a1n a11 a2 n a22 0
数学学院 信息与计算科学系
x ( k 1) ( D L) 1Ux ( k ) ( D L) 1 b 其G-S迭代矩阵为
B2 = BG =(D-L)-1U
数学学院 信息与计算科学系
例如 已知线性方程组 Ax=b 的矩阵为
2 1 A 1 1.5
其G-S迭代矩阵为
2 0 0 1 1 BG ( D L) U 3 1 2 0 0 1 3 0 1 2 0 0 1 2 1 3 1 2 0 0 0 3
取 x(0)=(0,0,0)T 计算如下:
k 1 … 8
x1(k) 0.72 … 1.099998
x2(k) 0.902 … 1.199999

关于jacobi迭代法收敛性的几个判别法

关于jacobi迭代法收敛性的几个判别法

关于jacobi迭代法收敛性的几个判别法
Jacobi迭代法作为一种迭代算法,其优势在于可以有效地把一个高维空间分解计算,收敛性也得到保障。

但是如何判断jacobi迭代法是否收敛,下面就介绍几种判别方法。

第一种判别法,按照jacobi迭代的实现方式,比较新的迭代值与上一次的迭代值的误差,如果差值小于特定的阈值,那么说明jacobi迭代确实收敛了。

第二种判别法,通过jacobi迭代的数学原理,将重要的特征值分解出来,比较特征值的大小,如果特征值越来越小,那么说明jacobi迭代法成功收敛。

第三种判别法,利用雅可比迭代中“西格玛收斂条件”,通过求解正定矩阵的谱半径,当谱半径小于1时,jacobi迭代法一定可以收敛。

第四种判别法,使用Matlab的解析工具,可以通过Matlab拟合必要条件,最后得出jacobi迭代法是否收敛的结论。

以上就是jacobi迭代收敛性判别法的简要介绍,jacobi迭代法收敛性判断技术属于一个很深入、很复杂的知识领域,需要背后有丰富的数学基础理论和实践经验。

雅克比(Jacobi)方法

雅克比(Jacobi)方法

雅克⽐(Jacobi)⽅法可以⽤来求解协⽅差矩阵的特征值和特征向量。

雅可⽐⽅法(Jacobian method)求全积分的⼀种⽅法,把拉格朗阶查⽪特⽅法推⼴到求n个⾃变量⼀阶⾮线性⽅程的全积分的⽅法称为雅可⽐⽅法。

雅克⽐迭代法的计算公式简单,每迭代⼀次只需计算⼀次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,⽐较容易并⾏计算。

考虑线性⽅程组Ax=b时,⼀般当A为低阶稠密矩阵时,⽤主元消去法解此⽅程组是有效⽅法。

但是,对于由⼯程技术中产⽣的⼤型稀疏矩阵⽅程组(A的阶数很⾼,但零元素较多,例如求某些偏微分⽅程数值解所产⽣的线性⽅程组),利⽤迭代法求解此⽅程组就是合适的,在计算机内存和运算两⽅⾯,迭代法通常都可利⽤A中有⼤量零元素的特点。

雅克⽐迭代法就是众多迭代法中⽐较早且较简单的⼀种,其命名也是为纪念普鲁⼠著名数学家雅可⽐。

原理【收敛性】设Ax=b,其中A=D+L+U为⾮奇异矩阵,且对⾓阵D也⾮奇异,则当迭代矩阵J的谱半径ρ(J)<1时,雅克⽐迭代法收敛。

⾸先将⽅程组中的系数矩阵A分解成三部分,即:A = L+D+U,其中D为对⾓阵,L为下三⾓矩阵,U为上三⾓矩阵。

之后确定迭代格式,X^(k+1) = B*X^(k) +f ,(这⾥^表⽰的是上标,括号内数字即迭代次数),其中B称为迭代矩阵,雅克⽐迭代法中⼀般记为J。

(k = 0,1,......)再选取初始迭代向量X^(0),开始逐次迭代。

【优缺点】雅克⽐迭代法的优点明显,计算公式简单,每迭代⼀次只需计算⼀次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,⽐较容易并⾏计算。

然⽽这种迭代⽅式收敛速度较慢,⽽且占据的存储空间较⼤,所以⼯程中⼀般不直接⽤雅克⽐迭代法,⽽⽤其改进⽅法。

实现通过雅克⽐(Jacobi)⽅法求实对称矩阵的特征值和特征向量操作步骤:S′=G T SG,其中G是旋转矩阵,S′和S均为实对称矩阵,S′和S有相同的Frobenius norm,可以⽤⼀个最简单的3维实对称矩阵为例,根据公式进⾏详细推导(参考 ):通过旋转矩阵将对称矩阵转换为近似对⾓矩阵,进⽽求出特征值和特征向量,对⾓矩阵中主对⾓元素即为S近似的实特征值。

雅可比迭代法 迭代矩阵

雅可比迭代法 迭代矩阵

雅可比迭代法(Jacobi iteration method)是一种用于求解线性方程组的迭代算法。

给定一个线性方程组Ax = b,其中A是一个n×n矩阵,x和b是n维向量,雅可比迭代法通过构造一个迭代矩阵来逼近方程的解。

雅可比迭代法的迭代矩阵通常表示为D - L - U,其中D、L和U分别是矩阵A的对角矩阵、严格下三角矩阵和严格上三角矩阵。

具体来说,D的对角线元素是A的对角线元素,L是A 的下三角部分(不包括对角线),U是A的上三角部分(不包括对角线)。

雅可比迭代法的迭代公式为:
x^(k+1) = D^(-1) * (b - (L + U) * x^k)
其中,x^k表示第k次迭代的解向量,D^(-1)是对角矩阵D的逆矩阵。

雅可比迭代法的收敛性取决于迭代矩阵D - L - U的谱半径(即最大特征值的绝对值)。

如果谱半径小于1,则雅可比迭代法收敛;否则,可能不收敛。

在实际应用中,通常会使用其他更高效的迭代方法,如高斯-赛德尔迭代法(Gauss-Seidel method)或SOR方法(Successive Over-Relaxation method)。

求矩阵特征值的方法

求矩阵特征值的方法

求矩阵特征值的方法介绍在线性代数中,矩阵特征值是一个重要的概念。

特征值可以帮助我们了解矩阵的性质和特点。

求解矩阵特征值的方法有很多种,每种方法都有其适用的场景和优缺点。

本文将介绍几种常用的方法,包括幂法、QR方法、雅可比方法和特征值问题的迭代解法。

幂法幂法是一种用于估计矩阵最大特征值和对应特征向量的迭代算法。

该方法的基本思想是通过不断迭代矩阵与向量的乘积,使得向量逐渐趋近于特征向量。

具体步骤如下:1.随机选择一个向量b作为初始向量。

2.计算矩阵A与向量b的乘积,得到向量c。

3.对向量c进行归一化处理,得到向量b。

4.重复步骤2和步骤3,直到向量b的变化趋于稳定。

5.向量b的模即为矩阵A的最大特征值的估计值,向量b即为对应的特征向量的估计值。

幂法的收敛速度取决于矩阵A的特征值分布。

如果矩阵A的最大特征值与其他特征值之间的差距较大,那么幂法往往能够快速收敛。

QR方法QR方法是一种迭代算法,用于计算实对称矩阵的特征值。

该方法的基本思想是通过不断迭代矩阵的QR分解,使得矩阵逐渐趋近于上三角矩阵,从而得到特征值的估计值。

具体步骤如下:1.对矩阵A进行QR分解,得到正交矩阵Q和上三角矩阵R。

2.计算矩阵R与矩阵Q的乘积,得到新的矩阵A。

3.重复步骤1和步骤2,直到矩阵A的变化趋于稳定。

4.矩阵A的对角线元素即为矩阵A的特征值的估计值。

QR方法的收敛速度较快,并且对于任意实对称矩阵都适用。

但是,QR方法只能计算实对称矩阵的特征值,对于一般的矩阵则不适用。

雅可比方法雅可比方法是一种用于计算实对称矩阵的特征值和特征向量的迭代算法。

该方法的基本思想是通过不断迭代交换矩阵的非对角线元素,使得矩阵逐渐趋近于对角矩阵,从而得到特征值和特征向量的估计值。

具体步骤如下:1.初始化一个单位矩阵J,将其作为迭代的初始矩阵。

2.在矩阵J中找到非对角线元素的绝对值最大的位置,记为(i, j)。

3.构造一个旋转矩阵P,使得P^T * J * P的(i, j)位置元素为0。

雅可比迭代法和高斯超松弛迭代

雅可比迭代法和高斯超松弛迭代
(63)
雅可比迭代法分量形式(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一个数组。

雅可比迭代法与矩阵的特征值

雅可比迭代法与矩阵的特征值

实验五矩阵的lu分解法,雅可比迭代法班级:学号:姓名:实验五ﻩﻩ矩阵的L U分解法,雅可比迭代一、目的与要求:➢ 熟悉求解线性方程组的有关理论和方法;➢ 会编制列主元消去法、LU 分解法、雅可比及高斯—塞德尔迭代法德程序; ➢ 通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。

二、实验内容:➢ 会编制列主元消去法、L U 分解法、雅可比及高斯—塞德尔迭代法德程序,进一步了解各种方法的优缺点。

三、程序与实例➢ 列主元高斯消去法算法:将方程用增广矩阵[A∣b ]=(ij a )1n (n )+⨯表示1) 消元过程对k=1,2,…,n —1①选主元,找{}n ,,1k ,k i k +∈使得k ,i k a =ik a ni k max ≤≤ ②如果0a k ,i k =,则矩阵A 奇异,程序结束;否则执行③.③如果k i k ≠,则交换第k 行与第k i 行对应元素位置,j i k j k a a ↔ j=k,┅,n+1④消元,对i=k+1, ┅,n 计算kk ik ik a a l /=对j=l+1, ┅,n+1计算kj ik ij ij a l a a -=2) 回代过程①若0=nn a ,则矩阵A奇异,程序结束;否则执行②。

②nn n n n a a x /1,+=;对i=n —1, ┅,2,1,计算ii n i j j ij n i i a x a a x /11,⎪⎪⎭⎫ ⎝⎛-=∑+=+程序与实例程序设计如下:#include <iostream>#include <cmath>using namespace std;void disp(double** p,int row,intcol){for(int i=0;i<row;i++){for(int j=0;j〈col;j++)cout〈<p[i][j]〈〈' ';cout〈〈endl;}}void disp(double*q,int n){cout<〈”=====================================”〈<endl;for(int i=0;i〈n;i++)cout〈<”X[”〈<i+1<<"]=”<<q[i]〈〈endl;cout〈〈"=====================================”<<endl;}void input(double** p,int row,int col){for(int i=0;i〈row;i++){cout<<”输入第"<<i+1〈〈”行:";for(int j=0;j<col;j++)cin>>p[i][j];}}int findMax(double** p,int start,int end){int max=start;for(int i=start;i<end;i++){if(abs(p[i][start])>abs(p[max][start]))max=i;}return max;}void swapRow(double** p,int one,int other,int col){double temp=0;for(int i=0;i〈col;i++){temp=p[one][i];p[one][i]=p[other][i];p[other][i]=temp;}}booldispel(double** p,int row,int col){for(int i=0;i〈row;i++){int flag=findMax(p,i,row);//找列主元行号if(p[flag][i]==0)return false;swapRow(p,i,flag,col);//交换行for(int j=i+1;j〈row;j++){double elem=p[j][i]/p[i][i]; //消元因子p[j][i]=0;for(int k=i+1;k<col;k++){p[j][k]—=(elem*p[i][k]);}}}return true;}double sumRow(double** p,double* q,int row,int col){ double sum=0;for(int i=0;i<col-1;i++){if(i==row)continue;sum+=(q[i]*p[row][i]);}return sum;}void back(double** p,int row,int col,double*q){ for(int i=row—1;i>=0;i-—){q[i]=(p[i][col—1]-sumRow(p,q,i,col))/p[i][i];}}int main(){cout〈<"Input n:";int n; //方阵的大小cin〉>n;double **p=new double* [n];for(int i=0;i〈n;i++){p[i]=new double [n+1];}in put(p ,n,n+1);i f(!dispel(p,n,n +1)){co ut<〈”奇异"<<en dl;return 0;}doub le* q=new doubl e[n];fo r(int i=0;i <n ;i++)q[i]=0;back (p,n,n+1,q);disp(q,n);delete[] q;for (i nt i=0;i <n;i++)del ete[] p[i];d elete [] p;}1。

雅可比迭代法及矩阵的特征值

雅可比迭代法及矩阵的特征值

实验五矩阵的lu 分解法,雅可比迭代法班级:**::实验五 矩阵的LU 分解法,雅可比迭代一、目的与要求:➢ 熟悉求解线性方程组的有关理论和方法;➢ 会编制列主元消去法、LU 分解法、雅可比及高斯—塞德尔迭代法德程序;➢ 通过实际计算,进一步了解各种方法的优缺点,选择适宜的数值方法。

二、实验内容:➢ 会编制列主元消去法、LU 分解法、雅可比及高斯—塞德尔迭代法德程序,进一步了解各种方法的优缺点。

三、程序与实例➢ 列主元高斯消去法算法:将方程用增广矩阵[A ∣b ]=(ij a )1n (n )+⨯表示1) 消元过程对k=1,2,…,n-1①选主元,找{}n ,,1k ,k i k +∈使得k ,i k a =ik a ni k max ≤≤ ②如果0a k ,i k =,则矩阵A 奇异,程序完毕;否则执行③。

③如果k i k ≠,则交换第k 行与第k i 行对应元素位置,j i k j k a a ↔ j=k,┅,n+1④消元,对i=k+1, ┅,n 计算对j=l+1, ┅,n+1计算2) 回代过程①假设0=nn a ,则矩阵A 奇异,程序完毕;否则执行②。

②nn n n n a a x /1,+=;对i=n-1, ┅,2,1,计算程序与实例程序设计如下:#include <iostream>#include <cmath>using namespace std;void disp(double** p,int row,int col){for(int i=0;i<row;i++){for(int j=0;j<col;j++)cout<<p[i][j]<<' ';cout<<endl;}}void disp(double* q,int n){cout<<"====================================="<<endl; for(int i=0;i<n;i++)cout<<"*["<<i+1<<"]="<<q[i]<<endl;cout<<"====================================="<<endl; }void input(double** p,int row,int col){for(int i=0;i<row;i++){cout<<"输入第"<<i+1<<"行:";for(int j=0;j<col;j++)cin>>p[i][j];}}int findMa*(double** p,int start,int end){int ma*=start;for(int i=start;i<end;i++){if(abs(p[i][start])>abs(p[ma*][start]))ma*=i;}return ma*;}void swapRow(double** p,int one,int other,int col){double temp=0;for(int i=0;i<col;i++){temp=p[one][i];p[one][i]=p[other][i];p[other][i]=temp;}}bool dispel(double** p,int row,int col){for(int i=0;i<row;i++){int flag=findMa*(p,i,row); //找列主元行号if(p[flag][i]==0) return false;swapRow(p,i,flag,col); //交换行for(int j=i+1;j<row;j++){double elem=p[j][i]/p[i][i]; //消元因子 p[j][i]=0;for(int k=i+1;k<col;k++){p[j][k]-=(elem*p[i][k]);}}}return true;}double sumRow(double** p,double* q,int row,int col){ double sum=0;for(int i=0;i<col-1;i++){if(i==row)continue;sum+=(q[i]*p[row][i]);}return sum;}void back(double** p,int row,int col,double* q){for(int i=row-1;i>=0;i--){q[i]=(p[i][col-1]-sumRow(p,q,i,col))/p[i][i]; }}int main(){cout<<"Input n:";int n; //方阵的大小cin>>n;double **p=new double* [n];for(int i=0;i<n;i++){p[i]=new double [n+1];}input(p,n,n+1);if(!dispel(p,n,n+1)){cout<<"奇异"<<endl;return 0;}double* q=new double[n];for(int i=0;i<n;i++)q[i]=0;back(p,n,n+1,q);disp(q,n);delete[] q;for(int i=0;i<n;i++)delete[] p[i];delete[] p;}1. 用列主元消去法解方程例2 解方程组计算结果如下➢ 矩阵直接三角分解法算法:将方程组A *=b 中的A 分解为A =LU ,其中L 为单位下三角矩阵,U 为上三角矩阵,则方程组A *=b 化为解2个方程组Ly =b ,U*=y ,具体算法如下:①对j=1,2,3,…,n 计算对i=2,3,…,n 计算②对k=1,2,3,…,n:a. 对j=k,k+1,…,n 计算b. 对i=k+1,k+2,…,n 计算③11b y =,对k=2,3,…,n 计算④nn n n u y x /=,对k=n-1,n-2,…,2,1计算注:由于计算u 的公式于计算y 的公式形式上一样,故可直接对增广矩阵[A ∣b ]=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+++1,211,2222211,111211n n nn n n n n n n a a a a a a a a a a a a 施行算法②,③,此时U 的第n+1列元素即为y 。

(完整版)第八节雅可比迭代法与高斯-塞德尔迭代法综述

(完整版)第八节雅可比迭代法与高斯-塞德尔迭代法综述

第八节 雅可比迭代法与高斯—塞德尔迭代法一 雅可比迭代法设线性方程组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)迭代法

雅可比(Jacobi)迭代法
迭代矩阵 BG = (D – L)-1 U,b’= (D – L)-1b
高斯赛德尔迭代矩阵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

雅可比迭代实验报告

雅可比迭代实验报告

雅可比迭代实验报告一、实验目的通过实验掌握雅可比迭代方法的基本原理及步骤,能够在Matlab软件平台上编写该迭代方法,进一步加深对线性方程组迭代算法的认识。

二、实验原理雅可比迭代法是一种求解线性方程组解的迭代算法,它是最古老的、最基本的迭代算法之一,常用于解决一些线性方程组的求解问题。

假设一个线性方程组为Ax=b,其中A为一个系数矩阵,b为一个已知项向量,x为一个未知向量,且A是对称正定矩阵。

由于方程组的解是未知的,我们先取一个近似的解向量,用它替换掉上式中的x,得到:Ax(1)=b 或 Ax1=b将式子改写为:其中D是A的对角线构成的对角矩阵。

那么,我们就可以进行一次迭代,将上一步求得的解向量代入到式中,继续进行计算,如此类推。

直到误差满足一定的条件时,则结束迭代。

三、实验步骤本次实验的具体步骤如下:1、输入待求解的线性方程组,其中系数矩阵A需是对称正定矩阵。

2、根据所求的系数矩阵A,求解对角矩阵D,以及矩阵A-D的逆矩阵。

3、根据输入的误差限和最大迭代次数,设定初始的近似解向量x0,并计算误差。

4、进行迭代,重复进行以下操作:(1)代入上一步求得的解向量,计算新的解向量。

(3)如果误差小于所设定的误差限或者迭代次数已经达到了设定的最大迭代次数,则结束迭代。

5、输出求解结果及迭代次数。

四、实验结果通过设计实验,我们在Matlab软件平台上实现了雅可比迭代的算法。

在进行MATLAB编程时,我们遵循上述步骤,利用所编写的Matlab程序求解了如下线性方程组:1 1 1 x1 52 3 5 x2 63 6 9 x3 9并且设定误差限为10^-5和最大迭代次数为100,并取初始迭代向量为[0 0 0]。

运行该程序后,得到的计算结果为:迭代次数:39解向量:[5 0.999 1]五、实验分析通过对Matlab代码的编写及运行,我们了解了雅可比迭代算法的具体实现过程,以及在实际应用中它具有的一些优点和不足。

求矩阵特征向量的三种方法数学专业

求矩阵特征向量的三种方法数学专业

求矩阵特征向量的三种方法数学专业求矩阵的特征向量是线性代数中的一个重要问题。

特征向量是指矩阵在线性变换下只发生缩放的向量,即满足Av=λv,其中A是矩阵,v是特征向量,λ是对应的特征值。

本文将介绍三种常用的求解矩阵特征向量的方法:特征方程法、幂法和雅可比迭代法。

一、特征方程法特征方程法是一种常用的求解矩阵特征向量的方法。

它的基本思想是通过求解特征方程来得到矩阵的特征值和特征向量。

对于一个 n 阶方阵 A,假设λ 是其特征值,v 是对应的特征向量。

由特征向量的定义可得Av = λv,也即 (A-λI)v = 0,其中 I 是单位矩阵。

由于 v 不为零向量,所以 (A-λI) 的行列式为零,即 det(A-λI) = 0。

因此,首先我们需要求解特征方程 det(A-λI) = 0,得到矩阵的特征值λ1, λ2, ..., λn。

接下来,我们需要求解每个特征值对应的特征向量。

对于每个特征值λi,我们需要求解方程组(A-λiI)v=0。

通过高斯消元法或其他求解线性方程组的方法,可以求得特征值对应的特征向量。

需要注意的是,矩阵A的特征值一共有n个,但是通过求解特征方程得到的特征值可能有重复或复数特征值。

为了得到n个线性无关的特征向量,需要用其他方法进行补充。

二、幂法幂法是一种迭代方法,用于求解矩阵的主特征向量(即对应最大特征值的特征向量)。

它的基本思想是通过迭代过程逼近主特征向量。

假设A是一个n阶方阵,对于任意初始向量x(0),迭代过程为x(k+1)=Ax(k),其中x(k)是第k次迭代得到的向量。

那么当k趋近于无穷大时,x(k)会收敛到主特征向量v1,即Av1=λ1v1,其中λ1是最大特征值。

为了实现幂法,我们需要选择一个合适的初始向量x(0)。

通常可以选择一个随机向量作为初始向量,然后进行迭代过程,直至收敛。

在每次迭代中,需要对x(k)进行归一化处理,以避免其模长趋于无穷大。

归一化可以通过将x(k)除以其模长实现。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

雅克比迭代
实验目的:
1.学习和掌握线性代数方程组的jacobi 迭代法。

2.运用jacobi 迭代法进行计算。

方法原理:
设方程组Ax=b 的系数矩阵A 非奇异而且),...,2,1(0n i a ii =≠,将A 分裂为 A=D+L+U,可以使计算简便。

其中),,...,,(2211nn a a a diag D =
⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡=
0...
............0...00 (002)
1
21n n a a a L ,⎥⎥⎥⎥⎦

⎢⎢⎢⎢⎣⎡=0...
...............00...02112n
n a a a U A=D+L+U ,其中),,...,,(2211nn a a a diag D =
⎥⎥⎥⎥⎦⎤⎢⎢⎢
⎢⎣⎡=0...
............0...00 (002)
1
21
n n a a a L ,⎥⎥⎥⎥⎦

⎢⎢⎢⎢⎣⎡=0...
...............00...02112n
n a a a U 将方程组
n ,...,2,1i ,b x a i n
1j j ij ==∑
=乘以
ii
a 1,得到等价的方程组
⎪⎪⎪

⎫ ⎝
⎛-
=∑
≠=n
i
j 1
j j ij i ii i x a b a 1x ,i=1,2,…n ,简记为x Bx f
=+。

其中 11()B I D A D L U --=-=-+, 1f D b -=. 我们称
x Bx f ϕ=+为迭代函数。

任取初始向量(0)
x x
=,按照
(1)
(
)
k k x
Bx f
+=+形成迭代格式,称这种迭代方法为Jacobi 迭代法。

算法描述:
Step1:给定一组x ,即初值。

Step2:用for 循环计算:
x[k+1]=(b[i]-∑∑+=-=-
n
1
i j 1
i 1
j ]j [x ]j ][i [a ]j [x ]j ][i [a )/a[i][i].
Step3:当fabs(x[k+1]-x[k])<eps时停止。

程序代码:
头文件:
#include<iostream.h>
typedef double Datatype;
class Matrix
{
private:
Datatype **ar;
int M;
int N;
public:
Matrix(int a=0,int b=0);
Matrix(Matrix &A);
~Matrix();
void print();
void Init();
void Jacobi(Matrix b,Matrix x,Matrix &xx);
bool compare(Matrix X);
void change(Matrix xx);
};
CPP文件:
#include<iostream.h>
#include<malloc.h>
#include<iomanip.h>
#include"Jacobi.h"
#define E 0.0000001
#include<math.h>
Matrix::Matrix(int a,int b)///////////////////构造函数
{
M=a;
N=b;
ar=(Datatype **)malloc(sizeof(Datatype *)*M);
for(int i=0;i<M;++i)
{
ar[i]=(Datatype *)malloc(sizeof(Datatype)*N);
for(int j=0;j<N;++j)
{
ar[i][j]=0;
}
}
}
Matrix::~Matrix()////////////////////////////析构函数
{
for(int i=0;i<M;++i)
{
free(ar[i]);
}
free(ar);
}
Matrix::Matrix(Matrix &A)
{
M=A.M;
N=A.N;
Datatype **p=(Datatype **)malloc(sizeof(Datatype *)*M);
for(int i=0;i<M;++i)
{
p[i]=(Datatype *)malloc(sizeof(Datatype)*N);
for(int j=0;j<N;++j)
{
p[i][j]=A.ar[i][j];
}
}
ar=p;
}
void Matrix::print()////////////////////////打印函数
{
for(int i=0;i<M;++i)
{
for(int j=0;j<N;++j)
{
cout<<setw(5)<<ar[i][j];
}
cout<<endl;
}
}
void Matrix::Init()/////////////////////////初始化函数
{
for(int i=0;i<M;++i)
{
cout<<"请输入第"<<i+1<<"行数据"<<endl;
for(int j=0;j<N;++j)
{
cin>>ar[i][j];
}
}
}
void Matrix::Jacobi(Matrix b,Matrix x,Matrix &xx) {
for(int i=0;i<N;++i)
{
Datatype sum=0;
for(int j=0;j<N;++j)
{
if(i==j)
continue;
sum+=ar[i][j]*x.ar[j][0];
}
xx.ar[i][0]=(b.ar[i][0]-sum)/ar[i][i];
}
}
bool Matrix::compare(Matrix X)
{
int flag=0;
for(int i=0;i<M;++i)
{
for(int j=0;j<N;++j)
{
if(fabs(ar[i][j]-X.ar[i][j])>E)
{
flag=1;
break;
}
}
break;
}
if(flag==1)
return false;//程序需继续迭代
else
return true;//迭代结束
}
void Matrix::change(Matrix xx)
{
for(int i=0;i<M;++i)
{ for(int j=0;j<N;++j) { ar[i][j]=xx.ar[i][j]; } } }
主程序:
#include"Jacobi.h"
void main() { int row; cout<<"*****"<<endl; cin>>row; Matrix A(row,row),b(row,1),x(row,1),xx(row,1); cout<<"请输入系数矩阵"<<endl; A.Init();//系数 cout<<"请输入矩阵b"<<endl; b.Init();//b cout<<"请输入迭代初始值"<<endl; x.Init();//迭代初始值 while(1) { A.Jacobi(b,x,xx); if(pare(xx)) { xx.print(); break; } x.change(xx); } }
测试数据:
1231231
232213225
x x x x x x x x x +-=⎧⎪
++=⎨⎪++=⎩ 测试结果:
参考文献:
[1]刑志栋,矩阵数值分析,陕西:陕西科学技术出版社,2005。

[2]谭浩强,C语言程序设计,北京:清华大学出版社,2005。

相关文档
最新文档