Lanczos算法
Lanczos算法是一种将对称矩阵通过正交相似变换变成对称三对角矩阵的算法,以20世纪匈牙利数学家Cornelius Lanczos命名。
基本信息
- 中文名
Lanczos算法
- 方法
通过正交相似变换
- 作用
变成对称三对角矩阵
- 本质
Arnoldi算法对于对称矩阵
概述
Lanczos算法是一种将对称矩阵通过正交相似变换变成对称 三对角矩阵的算法,以20世纪匈牙利数学家Cornelius Lanczos命名。Lanczos算法实际上是Arnoldi算法对于对称矩阵的特殊形式,可应用于对称矩阵线性方程组求解的Krylov子空间方法以及对称矩阵的特征值问题。
算法
Lanczos算法
给定对称矩阵A;
选取单位向量v_1;
设定v_0为零向量;
设定b_0=0;
for i=1:m
a_i=(Av_i,v_i);
b_i=||Av_i-a_iv_i-b_{i-1}v_{i-1}||;
b_i v_{i+1} = Av_i - a_i v_i - b_{i-1}v_{i-1};
end
由上述Lanczos算法得:V'AV=T,
其中V=[v_1,...,v_m], T=tridiag(b,a,b), a=[a_1,...,a_m], b=[b_1,...,b_m].
该算法的一个matlab实现程序
A代表任意一个需要三对角化的矩阵,b是任意一个向量,且b的行数与A的列数相同因为要用到v = A*q;
nmax是你想要得到的矩阵的大小,例如nmax=12,最后得到12*12的 三对角矩阵。
结果输出的是一个三对角矩阵