目录描述
1.本征值分解与最大本征值问题
1.1 本征向量与本征值(又称特征向量与特征值)
给定 D × D D\times D D×D的矩阵 M M M(方阵),设 D D D维归一向量 v v v(一阶张量或向量)与标量 γ \gamma γ(0阶张量),当满足 M v = γ v Mv = \gamma v Mv=γv时,称 v v v与 γ \gamma γ(本征向量对应的本征值)分别为 M M M的本征向量与本征值
1.2 本征值分解(又称特征值分解,eigenvalue decomposition)
M = U Γ U † M = U\Gamma U^\dag M=UΓU†( † \dag †:转置共轭)
U U U被称为变换矩阵,其每一列为 M M M的本征向量,且满足正交归一性即: U U † = I UU^\dag = I UU†=I
Γ \Gamma Γ为对角矩阵,称为本征谱
注: U U U中的每一列向量为其本征向量(满足1.1),且对应的本征值为 Γ \Gamma Γ中对应的元素。
注:厄密矩阵: M = M † M = M^\dag M=M†
注:不是任何矩阵都存在本征值分解,但是厄密矩阵一定存在本征值分解,且本征谱为实数
注:接下来的矩阵没有说明的情况下,都假设是厄密矩阵(哈密顿量,量子物理里面都是厄密矩阵)
1.3 最大本征值问题
最大本征值问题:假设矩阵本征值为实数(厄密矩阵),求解给定矩阵的最大本征值及其本征态(本征向量)
——最大本征值问题对应于如下优化问题:
给定矩阵 M M M,求解归一化向量 v v v,使得函数:
f = ∣ v T M v ∣ f = |v^{T}Mv| f=∣vTMv∣
的值极大化( v v v为( d × 1 d\times1 d×1)向量, M M M为( d × d d\times d d×d)矩阵)
——该最优化问题的解为 M M M的(绝对值)最大本征态(最大本征向量),对应的 f f f值为最大本征值
1.3.1 代码实例
本征值分解:
dim = 4
M = np.random.randn(dim,dim)##任意生成一个4*4的实矩阵
M = M +M.T#对称化以保证本征分解存在 .T等价于.transpose(1,0)
lm,u = np.linalg.eig(M) #对M进行本征值分解 lm为本征值 u为本征向量
M = U Γ U † M = U\Gamma U^\dag M=UΓU†:
M1 = u.dot(np.diag(lm)).dot(u.T) #其中np.diag(lm) 当lm是一个1维数组时,结果形成一个以一维数组为对角线元素的矩阵;lm是一个二维矩阵时,结果输出矩阵的对角线元素
err = np.linalg.norm(M-M1)#计算M与M1之间的误差
注:小于 1 0 − 15 10^{-15} 10−15可以忽略不计
使用 s c i p y scipy scipy中的 e i g s eigs eigs仅求最大几个本征值与本征向量,节省计算量:
import scipy.sparse.linalg as la
lm1,v1 =la.eigs(M,k = 1,which = 'LM') #M为待分解的矩阵,k为求几个本征值(向量),whick为求哪一个 LM(绝对值最大的)
1.4 最大本征值问题的幂级数求解法
考虑实对称矩阵 M M M,设 Γ 0 \Gamma_0 Γ0和 u ( 0 ) u^{(0)} u(0)为其绝对值最大的唯一本征值及本征向量,则:
lim k → ∞ M K = Γ 0 K u ( 0 ) u ( 0 ) T \lim_{k\rightarrow\infty}M^K = \Gamma_0^K u^{(0)}u^{(0)T} k→∞lim