矩阵对角化通过简单线性运算,将复杂矩阵变为简单矩阵。例如传统的特征值和特征向量对角化可以将矩阵n阶方阵A变为 A = T − 1 d i a g ( a 1 , a 2 , . . . a n ) T A=T^{-1}diag(a_1,a_2,...a_n)T A=T−1diag(a1,a2,...an)T
对于无法进行特征分解的矩阵,以及非方阵,我们常用的处理手段是将矩阵转化为方阵,然后使用双对角化,或者三对角化进行简化,Lanczos对方阵的对角化提供了一种迭代的方法:
1.对称方阵三对角化
首先从最简单的问题开始,当系数矩阵为n阶满秩对角方阵时,即Bx=b问题。
待解决的问题: 在求解线性方程组Bx=b时(B为n*n的方阵,x和b都是n阶向量),我们常常需要将其对角化,包括三对角化,双对角化和单对角化。即找到一组标准基向量V,使得B分解为以下形式: B n = V n T n V n − 1 B_n=V_nT_nV_n^{-1} Bn=VnTnVn−1,其中T为 T n = V n T B V n = ( α 1 β 2 β 2 α 2 β 3 β 3 ⋱ ⋱ ⋱ ⋱ β n β n α n ) T_{n}=V_{n}^TBV_{n}= \left( \begin{array} {llcrr} \alpha_{1} & \beta_{2} \\ \beta_{2} & \alpha_{2} & \beta_{3} \\ &\beta_3 &\ddots &\ddots \\ &&\ddots & \ddots & \beta_{n} \\ &&&\beta_{n} & \alpha_{n} \end{array} \right) Tn=VnTBVn=⎝⎜⎜⎜⎜⎛α1β2β2α2β3β3⋱⋱⋱⋱βnβnαn⎠⎟⎟⎟⎟⎞
处理思路: 构造一个矩阵Vm=[v1,v2,…vm]表示n维空间中m个独立的向量,使Vm满足以下4个条件: x m = V m y m V m T V m = 1 V m T v m + 1 = 0 ( B x m − b ) ⊥ v i , i = 1 , 2 , 3... m x_{m}=V_{m}y_{m} \\ V_{m}^TV_{m}=1\\ V_{m}^Tv_{m+1}=0 \\ (Bx_{m}-b)\perp v_{i}, i=1,2,3...m xm=VmymVmTVm=1VmTvm+1=0(Bxm−b)⊥vi,i=1,2,3...m
这样,把Bx=b投影在该n维空间中,用m个向量vm为基底表示为方程: ( V m T B V m ) y m = V m T b (V_{m}^TBV_{m})y_{m}=V_{m}^Tb (VmTBVm)ym=VmTb
迭代法则: 合理的构造方式应当满足以上四个条件,并使 T m T_m Tm尽可能简单,Lanszos提供了一种迭代获得 V m , α i , β i V_m,\alpha_i,\beta_i Vm,αi,βi的方法,迭代过程如下:
{ v 1 = b / β 1 , β 1 = ∥ b ∥ , v 0 = 0 f o r i = 1 , 2 , 3... w i = B v i − β i v i − 1 a i = v i T w i v i + 1 = ( w i − α i v i ) / β i + 1 h e r e β i + 1 m a k e ∥ v i + 1 ∥ , b r e a k i f t h e β i + 1 n o t e x i s t \left\{ \begin{array} {llllll} v_{1}=b/\beta_{1}, \beta_{1}=\parallel b \parallel, v_{0}=0 \\ for \quad i=1,2,3... \\ \quad w_{i}=Bv_{i}-\beta_{i}v_{i-1} \\ \quad a_{i}=v_{i}^Tw_{i} \\ \quad v_{i+1}=(w_{i}-\alpha_{i}v_{i})/\beta_{i+1} \\ \quad here \, \beta_{i+1} \,make \parallel v_{i+1} \parallel, break \, if \, the \, \beta_{i+1} \, not \,exist \end{array} \right. ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧v1=b/β1,β1=∥b∥,v0=0fori=1,2,3...wi=Bvi−βivi−1ai=viTwivi+1=(wi−αivi)/βi+1hereβi+1make∥vi+1∥,breakiftheβi+1notexist
证明过程:
为了证明迭代过程可以满足要求,我们从 v i v_i vi推导出 w i w_i wi和T 的表达式,进而得到Bx=b,即可证明。首先,迭代过程用矩阵表示为以下式子:
B V k = V k T k + β k + 1 v k + 1 e k T BV_k=V_kT_k+\beta_{k+1}v_{k+1}e^T_k BVk=VkTk+βk+1vk+1ekT
这样一来,B就用 T k T_k Tk来表示,即实现三对角化。为了求解x,在等式两边右乘 y k y_k yk,得到:
B V k y k = V k T k y k + β k + 1 v k + 1 η k BV_ky_k=V_kT_ky_k+\beta_{k+1}v_{k+1}\eta_k BVkyk=VkTkyk+βk+1vk+1ηk
其中,末项 β k + 1 v k + 1 η k \beta_{k+1}v_{k+1}\eta_k βk+1vk+1ηk代表微小扰动,可忽略不计;又因为 β 1 V k e 1 = b \beta_1V_ke_1=b β