第三十三篇 经过LR转换求特征值
三对角矩阵特征值的LR变换
一种最适用于稀疏(带宽或三对角化)矩阵的转化方法叫做“LR”变换。这是类似于之前描述[L][U]因式分解。
对于迭代变换的任意步骤k。也可以把矩阵写成一个上三角与一个下三角乘积的形式,详情可见LU分解解方程
从上面的式子可以得到
再代入第二个式子
表明[L]具有变换矩阵[P]所要求的性质,详情可见特征值编程基础。所以随着迭代的进行,变换后的矩阵[A]k趋向于一个特征值等于对角项的上三角矩阵。
计算实例
对于一个非对称矩阵的‘LR’分解
根据上面的公式,解过程为
[A]3已经接近上三角矩阵,因此当精确到小数点后两位时,它的特征值约为5.37和-0.37。
程序如下:
分为一个主程序和两个子程序,分别为LU分解的子程序lufac,和检查是否收敛的子程序checkit。
#LR转化求特征值
import numpy as np
import B
n=4;tol=1.0e-5;limit=100
lower=np.zeros((n,n))
upper=np.zeros((n,n))
enew=np.zeros((n,1))
eold=np.zeros((n,1))
a=np.array([[1,3.7417,0,0],[3.7417,2.7857,5.2465,0.0],[0.0,5.2465,10.1993,4.4796],[0.0,