雅可比方法

该方法是求解对称矩阵全部特征值和特征向量的一种方法,它基于以下结论:
任何实对称矩阵A可以通过正交相似变换成对角型,即存在正交矩阵Q,使得
雅可比矩阵 Python numpy_特征向量

其中λi(i=1,2,…,n)是A的特征值,Q中各列为相应的特征向量。

在正交相似变换下,矩阵元素的平方和不变。 即设雅可比矩阵 Python numpy_线性代数_02,Q为正交矩阵,记雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_03, 则
雅可比矩阵 Python numpy_对称矩阵_04

Jacobi方法的基本思想是通过一次正交变换,将A中的一对非零的非对角元素化成零并且使得非对角元素的平方和减小反复进行上述过程,使变换后的矩阵的非对角元素的平方和趋于零,从而使该矩阵近似为对角矩阵,得到全部特征值和特征向量。

1、矩阵的旋转变换

设A为n阶实对称矩阵,考虑矩阵
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_05
易见雅可比矩阵 Python numpy_特征向量_06是正交矩阵,记雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_07,可得
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_08
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_09,取ϕ使得 雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_10,其中雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_11,则有
雅可比矩阵 Python numpy_线性代数_12

推导如下

注意到雅可比矩阵 Python numpy_对称矩阵_13的第i,j行元素 以及雅可比矩阵 Python numpy_对称矩阵_14的第i,j行元素 为
雅可比矩阵 Python numpy_对称矩阵_15

分别令雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_16,可求得雅可比矩阵 Python numpy_线性代数_17,其中有
雅可比矩阵 Python numpy_特征向量_18
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_19带入雅可比矩阵 Python numpy_对称矩阵_20,
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_21
基于对称矩阵具有雅可比矩阵 Python numpy_特征向量_22化简可得
雅可比矩阵 Python numpy_对称矩阵_23
基于对称性,有雅可比矩阵 Python numpy_线性代数_24,可求得:
雅可比矩阵 Python numpy_矩阵_25
.
雅可比矩阵 Python numpy_特征向量_26带入,可得
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_27
.
基于对称矩阵具有雅可比矩阵 Python numpy_特征向量_22化简可得
雅可比矩阵 Python numpy_矩阵_29
.
雅可比矩阵 Python numpy_线性代数_30,取ϕ使得 雅可比矩阵 Python numpy_对称矩阵_31,其中雅可比矩阵 Python numpy_对称矩阵_32,则
雅可比矩阵 Python numpy_对称矩阵_33 ,可得
雅可比矩阵 Python numpy_矩阵_34
则有雅可比矩阵 Python numpy_矩阵_35,化简可得
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_36

雅可比矩阵 Python numpy_对称矩阵_37时,仅有雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_38,故有
雅可比矩阵 Python numpy_特征向量_39
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_19带入雅可比矩阵 Python numpy_对称矩阵_20,且基于矩阵对称性,可得
雅可比矩阵 Python numpy_线性代数_42
且当 雅可比矩阵 Python numpy_矩阵_43时,雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_44中仅有雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_38,故有雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_46 , 可得
雅可比矩阵 Python numpy_矩阵_47

雅可比矩阵 Python numpy_对称矩阵_48重复上述过程,得到雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_49…,可以证明输入这种变换不一定使得矩阵中非对角元素中零元素的个数单调增加,但可以保证非对角元素的平方和递减。

以A和雅可比矩阵 Python numpy_对称矩阵_50为例,设雅可比矩阵 Python numpy_特征向量_51雅可比矩阵 Python numpy_对称矩阵_52,即
.
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_53
由 (5)、(3)二式可得
雅可比矩阵 Python numpy_矩阵_54
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_55
雅可比矩阵 Python numpy_特征向量_56
由于(3)式条件为雅可比矩阵 Python numpy_线性代数_30,故在上述旋转变换下, 雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_58非对角元素平方和严格单调递减,由(1)式可知,对角元素平方和单调增加,当然,由旋转特性(旋转后向量长度不变)也可以得到结论。

2、Jacobi方法

通过一系列旋转变换将雅可比矩阵 Python numpy_对称矩阵_59变成雅可比矩阵 Python numpy_线性代数_60,求得A的全部特征值和特征向量,该方法被称为Jacobi方法。计算过程如下

①令k=0,雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_61
②求整数雅可比矩阵 Python numpy_对称矩阵_62,使得雅可比矩阵 Python numpy_线性代数_63,其中雅可比矩阵 Python numpy_线性代数_64
③计算旋转矩阵
雅可比矩阵 Python numpy_矩阵_65
雅可比矩阵 Python numpy_线性代数_66
雅可比矩阵 Python numpy_矩阵_67
雅可比矩阵 Python numpy_特征向量_68
雅可比矩阵 Python numpy_矩阵_69

④计算雅可比矩阵 Python numpy_线性代数_70

雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_71,其中雅可比矩阵 Python numpy_矩阵_72
雅可比矩阵 Python numpy_对称矩阵_73

雅可比矩阵 Python numpy_对称矩阵_74
雅可比矩阵 Python numpy_对称矩阵_75

再计算雅可比矩阵 Python numpy_特征向量_76,其中雅可比矩阵 Python numpy_特征向量_77

雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_78
雅可比矩阵 Python numpy_特征向量_79

⑤计算雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_80

雅可比矩阵 Python numpy_线性代数_81

⑥若雅可比矩阵 Python numpy_对称矩阵_82,则退出。可得特征值和特征向量

补充一点,在步骤③中,运用三角函数知识可由雅可比矩阵 Python numpy_线性代数_83求得雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_84
雅可比矩阵 Python numpy_线性代数_85
.
雅可比矩阵 Python numpy_对称矩阵_86,雅可比矩阵 Python numpy_对称矩阵_87, 则有雅可比矩阵 Python numpy_特征向量_88
.
运用二次求根公式 雅可比矩阵 Python numpy_线性代数_89,当雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_90可得
.
雅可比矩阵 Python numpy_线性代数_91
.
由于雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_92,故雅可比矩阵 Python numpy_线性代数_93,在区间雅可比矩阵 Python numpy_对称矩阵_94上,

假设雅可比矩阵 Python numpy_特征向量_95雅可比矩阵 Python numpy_特征向量_96与其雅可比矩阵 Python numpy_矩阵_97值矛盾,故取雅可比矩阵 Python numpy_线性代数_98

假设雅可比矩阵 Python numpy_对称矩阵_99雅可比矩阵 Python numpy_矩阵_100与其雅可比矩阵 Python numpy_矩阵_97值矛盾,故取雅可比矩阵 Python numpy_对称矩阵_102

综上,有:
雅可比矩阵 Python numpy_矩阵_103时,取雅可比矩阵 Python numpy_对称矩阵_104,等价于雅可比矩阵 Python numpy_对称矩阵_105
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_106时,取雅可比矩阵 Python numpy_矩阵_107,等价于雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_108
设sign为符号函数,则有
雅可比矩阵 Python numpy_特征向量_109
.
.
若ϕ很小,则o就很大,可能导致雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_110在计算机上溢出,可取极限分析
雅可比矩阵 Python numpy_对称矩阵_111

采用雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_112进行分子有理化,得到
雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_113

故当ϕ很小时,有雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_114
.
雅可比矩阵 Python numpy_对称矩阵_115,可得雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_116
.
雅可比矩阵 Python numpy_特征向量_117三角函数关系,可推得雅可比矩阵 Python numpy_雅可比矩阵 Python numpy_118

更多参考雅可比矩阵(Jacobi)