[矩陣計算]Davidson對角化


更新: 8 AUG 2016

花了幾個禮拜寫程序終於跑過Davidson對角化!至此,Davidson對角化的思路已經完全清晰。如尚有不准確之處,請務必回復指出!

一、Davidson對角化的思路

Davidson對角化是一種快速求出大規模稀疏矩陣的方法,對於求量子體系中\(\textbf{H}|C\rangle=E|C\rangle\)問題有極大的幫助。其基本原理同Lanczos對角化很相似,此外還可以從牛頓法推出(見Molecular Electronic-Structure Theory)。其數學原理和證明不在此處列出,有深入需求者建議參看Davidson的原始論文:

E. R. Davidson.
The iterative calculation of a few of the lowest eigenvalues and corresponding eigenvectors of large real symmetric matrices.
J. Comput. Phys., 17:87-94, 1975.

此處總結其算法思路。

  1. 在某基組下給定大規模的矩陣\(A\),要求求其最小的本征值。任取一組標准正交基,如直接從原來的基組中截取數個即可,作為初始的基組猜測,記作\(B\)。在此子空間內表示\(A\)\(A_0\),進行對角化求其最小本征值及對應的本征函數,分別記作\(\lambda_0\)\(b_0\)。這里A在B中的矩陣表示\(A_0\)規模很小,可以通過QR方法等經典的對角化方法求解。
    注:初始的基組構成一個子空間(Krylov子空間),Davidson對角化即通過一定的挑選不斷地向這個子空間添加基函數,使其最小本征值\(\lambda_0\)趨近不變。收斂的證明略。

  2. 牛頓法構造新的基函數:

\[b=-(A^0-\lambda_0I)^{-1}(A-\lambda_0I)b_0 \]

然后從中扣除投影在子空間B中的部分:

\[b:=\prod\limits_{i=1}^M(I-B_iB_i^T) b \]

剩下的部分即與子空間B正交的新基,將其歸一化並加入到\(B\)中。
注:實際上就是將\(b\)加入到\(B\)中並正交歸一化。\(A^0\)表示矩陣\(A\)的對角元組成的對角矩陣。

  1. 重新計算\(A\)在新的\(B\)中的矩陣表示\(A_0\),並求其最低本征值及對應的本征函數。重復2,3直到子空間\(B\)不變,具體說就是最低本征值\(\lambda_0\)的變化小於閾值。
    注:這個判別等價於對正交化(但未歸一)的\(b\)求其模長並判別,模長小於閾值時,說明新加入的本征函數對子空間的貢獻極小。

以上即主要步驟,算法的詳細步驟參看上文獻III節。

二、Davidson對角化在計算中的簡單優化

思路1. 避免重復計算\(A\)\(B\)中的投影,每次新加入基組時對稱地將\(Ab\)加入即可。對於步驟2中

\[b=-(A^0-\lambda_0I)^{-1}(A-\lambda_0I)b_0 \]

可以改寫為

\[b=-(A^0-\lambda_0I)^{-1}(Ab_0-\lambda_0b_0) \]

一般來說,\(Ab_0\)是每步循環中最耗時的步驟,計算使應當單獨寫成函數並盡可能利用\(A\)的稀疏性與對稱性減少計算。

思路2. 簡化牛頓法。子空間B的規模會在循環中不斷擴大,對\(A_0\)的對角化成本也會越來越高。這一點可以通過以下方法簡化:
每步中僅將\(b_0\)和新的到的\(b\)作為基組構成2維子空間,將\(A\)在此子空間中表示,是一個2x2矩陣,對角化成本極低,但是可能需要增加循環步數。

直接將與\(b_0\)正交化,但未歸一化的\(b\)\(b_0\)相加得到新的\(b_0\),免去對角化操作。

思路3. 減少矩陣乘法

\[b:=\prod\limits_{i=1}^M(I-B_iB_i^T) b \]

中,$ \prod\limits_{i=1}^M(I-B_iB_i^T) $可以被簡化為 $ (I-\sum\limits_{i=1}^MB_iB_i^T) \(,這里用到了\)B\(基組的正交性。這一步可能會節省很多時間。此外這一步不需要每次循環時計算,即每次在向B中擴充新基的時候減去新的\)bb^T$即可。

三、可能遇到的問題

若初始的基組\(B\)只取一個基函數,這時本征值與對應的\(A\)矩陣對角元相等,導致

\[b=-(A^0-\lambda_0I)^{-1}(A-\lambda_0I)b_0 \]

中遭遇奇異矩陣。此時可以將對角矩陣的對應元加一個正的微擾即可。此處\((A^0-\lambda_0I)\)最好保持正定,特別是在使用簡化的牛頓法時。牛頓法要求Hesse矩陣保持正定以求函數的極小值點。
同時,初始的子空間的估計最好能夠比較接近真實的情況,否則有可能出現收斂到別的本征值上的問題,特別是簡化的牛頓法。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM