SlideShare une entreprise Scribd logo
1  sur  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)


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

Contenu connexe

En vedette

数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013
Shuyo Nakatani
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例
tecopark
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
Shuyo Nakatani
 

En vedette (14)

今Cinderが熱い! #cinder
今Cinderが熱い! #cinder今Cinderが熱い! #cinder
今Cinderが熱い! #cinder
 
The Introduction to Vector Graphics
The Introduction to Vector GraphicsThe Introduction to Vector Graphics
The Introduction to Vector Graphics
 
Math1 Vector
Math1 VectorMath1 Vector
Math1 Vector
 
OpenGL 3DCG
OpenGL 3DCGOpenGL 3DCG
OpenGL 3DCG
 
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
 
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
 
ピーFIの研究開発現場
ピーFIの研究開発現場ピーFIの研究開発現場
ピーFIの研究開発現場
 
Dbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortexDbts2015 tokyo vector_in_hadoop_vortex
Dbts2015 tokyo vector_in_hadoop_vortex
 
数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013数式を綺麗にプログラミングするコツ #spro2013
数式を綺麗にプログラミングするコツ #spro2013
 
Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例Direct xとopenglの隠蔽実装例
Direct xとopenglの隠蔽実装例
 
Excel方眼紙を支えるJava技術 2015
Excel方眼紙を支えるJava技術 2015Excel方眼紙を支えるJava技術 2015
Excel方眼紙を支えるJava技術 2015
 
言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo言語処理するのに Python でいいの? #PyDataTokyo
言語処理するのに Python でいいの? #PyDataTokyo
 
ディープラーニング最新動向と技術情報
ディープラーニング最新動向と技術情報ディープラーニング最新動向と技術情報
ディープラーニング最新動向と技術情報
 
OpenGLと行列
OpenGLと行列OpenGLと行列
OpenGLと行列
 

Similaire à Rでの対称行列の固有値・固有ベクトルの最適な求め方 (8)

Sized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアルSized Linear Algebra Package のチュートリアル
Sized Linear Algebra Package のチュートリアル
 
ADVENTURE_Magneticの概要
ADVENTURE_Magneticの概要ADVENTURE_Magneticの概要
ADVENTURE_Magneticの概要
 
20030203 doctor thesis_presentation_makotoshuto
20030203 doctor thesis_presentation_makotoshuto20030203 doctor thesis_presentation_makotoshuto
20030203 doctor thesis_presentation_makotoshuto
 
Nips yomikai 1226
Nips yomikai 1226Nips yomikai 1226
Nips yomikai 1226
 
Tokyo r12 - R言語による回帰分析入門
Tokyo r12 - R言語による回帰分析入門Tokyo r12 - R言語による回帰分析入門
Tokyo r12 - R言語による回帰分析入門
 
Icp3.2 takmin
Icp3.2 takminIcp3.2 takmin
Icp3.2 takmin
 
XLWrapについてのご紹介
XLWrapについてのご紹介XLWrapについてのご紹介
XLWrapについてのご紹介
 
Prml7 7.1
Prml7 7.1Prml7 7.1
Prml7 7.1
 

Plus de wada, kazumi

Plus de wada, kazumi (20)

Rによる繰り返しの並列処理
Rによる繰り返しの並列処理Rによる繰り返しの並列処理
Rによる繰り返しの並列処理
 
2018Rユーザ会用
2018Rユーザ会用2018Rユーザ会用
2018Rユーザ会用
 
Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017Ⅳ. 可視化事例集 2017
Ⅳ. 可視化事例集 2017
 
Ⅲ. 資料編 2017
Ⅲ. 資料編 2017Ⅲ. 資料編 2017
Ⅲ. 資料編 2017
 
Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017Ⅱ. データ分析編 2017
Ⅱ. データ分析編 2017
 
Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017Ⅰ. Rの基礎 2017
Ⅰ. Rの基礎 2017
 
2017Rユーザ会用
2017Rユーザ会用2017Rユーザ会用
2017Rユーザ会用
 
Rデモ03_データ分析編2016
Rデモ03_データ分析編2016Rデモ03_データ分析編2016
Rデモ03_データ分析編2016
 
Rデモ02_入出力編2016
Rデモ02_入出力編2016Rデモ02_入出力編2016
Rデモ02_入出力編2016
 
Rデモ01_はじめの一歩2016
Rデモ01_はじめの一歩2016Rデモ01_はじめの一歩2016
Rデモ01_はじめの一歩2016
 
統計環境R_データ分析編2016
統計環境R_データ分析編2016統計環境R_データ分析編2016
統計環境R_データ分析編2016
 
統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016統計環境R_はじめの一歩2016
統計環境R_はじめの一歩2016
 
統計環境R_データ入出力編2016
統計環境R_データ入出力編2016統計環境R_データ入出力編2016
統計環境R_データ入出力編2016
 
自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare自然科学の統計学2.2 slideshare
自然科学の統計学2.2 slideshare
 
Rプログラミング03 データ分析編
Rプログラミング03 データ分析編Rプログラミング03 データ分析編
Rプログラミング03 データ分析編
 
Rプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモRプログラミング03 「データ分析編」デモ
Rプログラミング03 「データ分析編」デモ
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
Rプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモRプログラミング02 「データ入出力編」デモ
Rプログラミング02 「データ入出力編」デモ
 
Rプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモRプログラミング01 「はじめの一歩」 演習デモ
Rプログラミング01 「はじめの一歩」 演習デモ
 
Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩Rプログラミング01 はじめの一歩
Rプログラミング01 はじめの一歩
 

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) 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