rでの対称行列の固有値・固有ベクトルの最適な求め方

1
2009.08 作作 [R] 対対 対対対 作作作 、、、QR 作作作作作作作作作作作作作作 R 作作作作作作 LAPACK 作 作作 DC 作作作作作作作作作作作作作 HG 作作作作作作作作 eigen 作作作作作作作作作作 作作作作作 LAPACK 対 対 Phase 1. 作作作作作作作作 (作作作作作) Phase 2. 作作作作作 Phase 3. 作作作作作作作作作作作作作作作作作作 Phase 1 作 3 作 作 Phase 2作 対対対対対(Phase 2)対対対 1) QR 作 [LAPACK V.1] 作作作作作 O(n**3) 2) Divide-and-conquer(作作作作:DC)作 [LAPACK V.2] 作作作作作作作作 O(n**3) 3) Holy Grail(HG)作 [LAPACK V.3] 作作作作作 O(nk) 対 対対対対対対対対対対対 LAPACK 対対対対 作作作作作 eigen() - DSYEVR 作作作作作作作作作作作作作作作作作作作作 RRR 作作作作 ← HG 作 RRR: relatively robust representation 作作 - DGEEV 作作作作作作作作作作作作作作作作作作作作作 simple 作作作作 - ZHEEV 作作作作作作作 - ZGEEV 作作作作作作作 作作作作作 svd() - DGESDD 作作作作作作 DC 作作作作作 - ZGESVD 作作作作作作作 [] “LAPACK Users’ Guide” Third Edition http://www.netlib.org/lapack/lug/index.html

Upload: wada-kazumi

Post on 25-May-2015

722 views

Category:

Education


5 download

TRANSCRIPT

Page 1: Rでの対称行列の固有値・固有ベクトルの最適な求め方

2009.08作成

[R] 対称行列の固有値・固有ベクトルの最適な求め方

 固有値算出には、固有値分解、特異値分解、QR分解などいくつかの方法があり、Rで

はいずれも LAPACKのルーチンを呼び出して使っている。

対称行列についての計算の場合は、計算効率が良く DC法よりもメモリを消費しない HG

法を採用している eigen関数の利用が最も良いと思われる。

LAPACKにある固有値・特異値問題の解き方の流れ

  Phase 1. 初期行列を減じる  (二重対角化)

Phase 2. 固有値計算

Phase 3. 結果がもとの行列に対応するよう逆変換

 ※ Phase 1と 3は並立処理可能。問題は Phase 2。

固有値計算(Phase 2)の解法

1) QR法 [LAPACK V.1~]

計算効率が O(n**3)

2) Divide-and-conquer(分割統治:DC)法 [LAPACK V.2~]

計算効率が最大で O(n**3)

3) Holy Grail(HG)法 [LAPACK V.3~]

計算効率が O(nk)

Rの固有値・特異値分解で使っている LAPACKルーチン

 ○ 固有値分解 eigen()

  - DSYEVR 対称行列の固有値問題に対する倍精度実数の RRRドライバ ← HG法

        ※ RRR: relatively robust representationの略

- DGEEV 非対称行列の固有値問題に対する倍精度実数の simpleドライバ

- ZHEEV 倍精度複素数用

- ZGEEV 倍精度複素数用

 ○ 特異値分解 svd()

- DGESDD 特異値分解の DC法ドライバ

- ZGESVD 倍精度複素数用

[参考]  “LAPACK Users’ Guide” Third Edition http://www.netlib.org/lapack/lug/index.html