• 沒有找到結果。

第四章、 數值方法

4.1 Lanczos Method

首先,考慮標準特徵値問題

μ

=

Ax x (4.1.1)

A 為一個 N x N 的矩陣,μ為特徵值,X 為特徵向量,如果我們從任意向

v1開始,在這 Lanczos 演算法中,我們會利用連續的向量,當做新的基底

1 1 1

2

1 1 1 , 1 1 1

p+ = +p+ p+ ap+ = +p+ p+

b w w u Hu (4.1.15)

我們使用此方法決定其他三條對角線(tridiagonal)矩陣 T 的其他元素。

所以

此為一個相似變換(similar transformation),其中一種特性為 A 與 T 有相同 特徵値,便可以利用 Lanczos 方法去找出ui使 A 能夠轉成 T,讓對角化簡單

1 1

但事實上,正因為三對角線(Tridiagonal)矩陣 T 的關係,使正交性快速的減 低,T 的特徵值是相近於 A 的特徵值,並且在某些情況之下,有可能產生 的新基底是與舊基底線性相關(linear dependent)的,所以 T 的特徵值也有可 能並不接近 A 的特徵值,因此,Lanczos 演算法仍然不是很穩定。

Lanczos 所需改善的地方:

1.避免正交性的損失。

2.使現有基底的正交。

3.移除假的特徵值。

因此,基本的 Lanczos 的演算法中,做為大型矩陣計算方面,需要再做許多 修改,接下來介紹的 ARPACK,克服了某些 Lanczos 的問題。

4.2 ARPACK 簡介

ARPACK 是一個用來求解大規模特徵值問題的軟體。ARPACK 是由

Fortran77 所寫的副程式的集合,主要可以解決來自各應用領域的大規模對 稱、非對稱與廣義特徵值問題。可以求特定數量的特徵值,其中包含最大 或最小實部特徵值、最大或最小虛部特徵值、以及最大或最小振幅的特徵 值。ARPACK 軟體是基於隱式重開始 Arnoldi/Lanczos 方法(Implicitly Restarted Arnoldi/Lanczos Method)。Arnoldi/Lanczos 是用來求解大規模 n*n 矩陣的幾個特徵值的重要方法,特別適合用於大規模稀疏矩陣的特徵值問 多的矩陣,例如解決固態物理中所使用到的 Tight-Binding Method、解決微 分方程的有限差分法(Finite Difference Method),都是矩陣中具有相當多為零 的元素,使用 ARPACK 才會有較佳的結果。

主要功能包括:

1. 求解單雙精度實對稱矩陣特徵值問題

2. 求解雙精度複數矩陣特徵值問題(Hermitian & non-Hermitian) 3. 廣義特徵值問題

4. 奇異值分解(SVD)問題

最新軟體版本可上 http://www.caam.rice.edu/software/ARPACK/ 自行下載使 用,網站上也有線上的 User Guide 可以供大家使用。

Implicit Restart Arnoldi Method (IRAM)

 

圖 4.2.1、IRAM 流程圖  

Arnoldi Factorization

在介紹 IRAM 之前,首先要瞭解 k 階 Arnoldi Factorization。先考慮一個 一般特徵值問題,定義:如果待求矩陣ACn n× ,且滿足

T k = k k+ k k

AU U H f e (4.2.1)

其中UkCn k× 為正交歸一的行向量,稱為 Arnoldi 向量,且U fHk k =0,

k k×

k C

H 是上海森堡矩陣(upper Heisenberg matrix),為下對角線以上皆有值 的矩陣,eTk =

(

L 0 1 0 L

)

在第 k 個位置才有 1 其它為零,此關係為 A 的 k 階 Arnoldi Factorization,為 Krylov 子空間的一種應用。若 A 是 Hermitian,

Hk是實數對稱三對角線矩陣(real symmetric tridiagonal matrix),此關係稱

為 A 的 k 階 Lanczos 分解,所對應的行向量Uk稱為 Lanczos 向量。理論上

Filter polynomials

假設在n n× 矩陣 A 中有特徵值μi與特徵向量xi,而有興趣的是前 k 個特

與 A 有關,則 f 為 A 的特徵多項式 積,直接處理將此 Filter 多項式乘上向量,稱為顯式重開始(Explicit

Restarting)。若矩陣很大時,顯式重開始勢必會花費許多的時間,因此,隱 式重開始便因應而生。

Implicit Restart Arnoldi Method

針對顯式重開始的不方便,因此發展了隱式重開始,先將 Arnoldi 分解

由此可以看出,藉由隱式位移 QR 分解,可以得到與顯式重開始相同效 果的基底,詳細推導內容請參見附錄。由於e QTm 的前 k-1 項為零,所以此 m 階的前 k 項可以等價改寫成 k 階 Arnoldi 分解,或等同只取前 k 項,本質上 是一樣的:

T

k k k k k

+ = + ++ +

AU U H f e (4.2.7)

其中,殘餘向量fk+ =U ek+ k+1βˆk+fmσ ,此時的 k 階 Arnoldi 分解,可以包含 此 m 階 Arnoldi 分解中,有興趣的特徵值所展延的特徵空間,並且起始向量 也將不想要的特徵值過濾掉,進而再增加 p 階使 Arnoldi process 產生下一個 新的 m 階 Arnoldi 分解,再進行隱式位移 QR 法,直到收斂為止。利用所得 到的該 Krylov 子空間的基底向量與顯式重開始v1所產生的空間相同的特 性,便可以大大減少產生 Krylov 子空間所需要的計算量。此為 ARPACK 重 要的精神。

根據上述方法,可編成下列演算法:

( )

an m step Arnoldi Factorization For l until convergence

Computer and select set of p shifts based upon or perhaps other information

For j p

Beginning with the k step Arnoldi factorization

apply p additional step of the Arnoldi process to obtain a new m step

特徵空間、Krylov 子空間與稀疏矩陣紀錄方法

眾所皆知的,一個向量可以展延(span)成一維空間,二個獨立向量可以 展延(span)成二維空間,以此類推,當有 N 個獨立向量時,便可以展延成無 限維空間,在物理上稱為 Hilbert 空間(Hilbert space)。

特徵空間是用來描述一個由 A 的特徵值相對應特徵向量所形成的空

4.2.2 Test Result

我們是使用有限差分法(finite difference method)[15]將微分方程轉成矩陣,

再利用 ARPACK 去執行對角化所產生的結果,其正解應為 0.5、1.5、2.5...

等,以下是測試的結果

圖 4.2.1、矩陣 10 萬*10 萬的特徵值

圖 4.2.2、ARPACK 的矩陣大小與時間分析圖

圖 4.2.3、LAPACK 的矩陣大小與記憶體分析圖

圖 4.2.4、ARPACK 的矩陣大小與記憶體分析圖

圖 4.2.5、LAPACK 的矩陣大小與記憶體分析圖

可以看出以 ARPACK 與 LAPACK 相比之下,記憶體大小大幅度的降低,計 算大小大幅度的增加。

ARPACK 的所有參數皆列在附錄 A 中,其中最主要需要更改的參數如 下所示:

參數 功能描述

n 矩陣大小

nev 求解特徵值的個數

ncv Arnoldi 分解長度,即基底數量;預設值=4*nev which 指定求解特徵值的特性(參考附錄 A) iparam(3) 允許疊代的最大次數;預設值=3*n

其中,主要控制運算時間長短的兩個參數為 ncv 與 iparam(3),增加基底

數 ncv 能降低運算時間,其主要是將待解矩陣分割成小矩陣的大小,ncv 越 大,所產生小矩陣的大小越大,疊代次數會較少,但是每次疊代後解小矩 陣的時間越多;反之,ncv 越小,所產生的小矩陣的大小越小,解小矩陣的 時間越少,但疊代次數會較多。舉例來說:若待解矩陣為 1000*1000 的大 小,ncv 假設是 200,則每次的小矩陣為 200*200,可能的疊代次數假設是 5 次,即解 5 次 200*200 大小的矩陣;若 ncv 假設是 10,則每次的小矩陣 為 10*10,可能的疊代次數假設是 100 次,即解 100 次 10*10 的矩陣。

疊代次數(iparam(3))只需要修改到滿足程式未判定疊代次數不夠即可。

圖 4.2.6、ARPACK 參數修改對時間的影響,前項參數為 ncv(basis)=4*nev,

後項參數為 iparam(3) =3*N

在經過一連串的測試之後,針對求一維簡諧振子最低的 15 個能量,測 試出基底數量取 12*nev (nev=15)是可以節省最多時間的,在此提供給大家 參考。但是一般來說,不同的矩陣對於參數的優化並沒有一個固定的公式,

端看不同矩陣的稀疏程度、特徵值的結構與個數的而決定,因此,針對任 何一個新的問題,便必須經由反覆的測試才能得到最佳化的參數。

第五章、總結與未來工作

之後,可以慢慢增加計算複數矩陣,或是加入能平行處理矩陣的 PARPACK,都是未來的計算課題。

參考文獻

[1]Novoselov, K.S. et al. "Electric Field Effect in Atomically Thin Carbon Films", Science, Vol 306 (5696), p. 666-669, 2004

[2] Novoselov, K.S. et al. "Two-dimensional atomic crystals", PNAS, Vol 102 (30), p.

10451-10453, January 26, 2005

[3] Mark Wilson, Phys. Today 59 January 21 (2006)

[4] A.K. Geim & K.S. Novoselov, Nature Materials 6, 183-191 (2007)

[5] J. R. Williams, L. C. DiCarlo, and C. M. Marcus, Science 317, 638 (2007) [6] D. A. Abanin and L. S. Levitov, Science 317, 641 (2007)。

[7]Barbaros Özyilmaz et al.,Phys. Rev. Lett. 99, 166804 (2007)

[8]Marek Korkusinski,”Application of the effective band-orbital model to semiconductor nanostructure”

[9]Gene Howard Golub, Charles F. Van Loan,”Matrix computations”(1996)

[10]R. B. Lehoucq, D. C. Sorensen, C. Yang,” ARPACK Users' Guide:Solution of Large Scale Eigenvalue Problems with Implicitly Restarted Arnoldi Methods”(1997)

[11]A. H. Castro Neto, F. Guinea, N. M. R. Peres, K. S. Novoselov and A. K. Geim, Rev.

Mod. Phys. 81, 109 (2009)

[12] K. Nakada, M. Fujita, G. Dresselhaus, M. S. Dresselhaus, Phys. Rev. B 54, 17954 - 17961 (1996)

[13] Peter Y. Yu,Manuel Cardona,”Fundamentals of Semiconductors:Physics and Materials Properties”(springer-Verlag 1996)

[14] D. J. Chadi and M. L. Cohen Calculations of the Valence Bands phys. stat. sol. (b) 68, 405 (1975)

[15] L. V. Fausett, “Applied Numerical Analysis Using Matlab”, Prentice-Hall(1999) [16] R. Saito, M. Fujita, G. Dresselhaus, M.S. Dresselhaus , Phys. Rev. B 46, 1804 - 1811

(1992)

[17] R. Saito, G. Dresselhaus, M.S. Dresselhaus ,”Physical Properties of Carbon Nanotubes”,(Imperial College Press, Convent Garden, London 1998)

[18]A. Varykhalov, J. Sa´nchez-Barriga, A. M. Shikin, C. Biswas, E. Vescovo, A. Rybkin, D.

Marchenko, and O. Rader, Phys. Rev. Lett 101 157601(2008)

附錄 A:隱式位移 QR 法 

one step of single shifted QR algorithm

proof easily

singular

non singular singular μ

( ) ( )

( ) ( )( )

附錄 B:ARPACK 程式參數

若設定了以上變數,則需相對修改 maxn、maxnev、maxncv 滿足下式:

maxn ≧ n maxncv ≧ ncv maxnev ≧ ncv ncv ≧nev+1 (在 C code 中並無 max 這些參數)

根據需要,下列變數可以依照其功能修改:

lwork1:陣列 work1 的大小,設定為工作的陣列大小,至少應被設置 為 ncv*(ncv+8)。

tol:收斂標準,此值用來控制收斂精確度。tol 越小,達到停止標準所需要 的計算量越大

ido:逆通訊標誌,進入**aupd 之前要設為 0

bmat:表示解決的是標準特徵值問題(bmat=’I’)或是廣益特徵值問題 (bmat=’G’)

iparam(1):是否在隱式 QR 法中使用位移。若不清楚可設定為(iparam(1)=1) iparam(3):允許的 IRAM 疊代的最大次數

iparam(7):ARPACK 的運算模式

相關文件