■Rを用いた固有値・固有ベクトルの計算○この頁の内容右の表1のように成分が数値で与えられた正方行列の固有値と固有ベクトルを統計解析用のフリーソフトRで計算する方法の解説 |
|
||||||||||||||||
○固有値,固有ベクトルとは(簡単な復習) 与えられた正方行列Aに対して
○ 一般にn次正方行列に対する固有方程式はn次方程式になり,n次方程式の解は(重解や虚数解も含めると)n個存在する…2次の正方行列の固有値は2個,3次の正方行列の固有値は3個,…である. ※固有ベクトルの大きさは決まらない.(あるベクトルが固有ベクトルであればその定数倍(≠0倍)もすべて固有ベクトルになる.Rで固有ベクトルを求めたときは,この頁の末尾で示すように単位ベクトル(方向を変えずに大きさを1にしたベクトル)で示される.) |
例えば,表1の行列をとおくとき, 固有値λ1=6,固有ベクトルに対して, A=λ1 が成り立つ. これら3組をRで求めるにはどうすればよいかというのがこの頁の内容 |
||||||||||||||||
○処理の流れ
(1)Excelの起動→(2)Rの起動→(3)Rコマンダーの起動
→(4)データのインポート→Rコマンダーの終了→Rの終了→Excelの終了 |
※ RとRコマンダー(RExcel)のインストール方法についてはこの頁参照 ※ 他の処理と共通な(1)〜(3)および終了処理についてはここでは省略して左の(4)〜(6)のみを解説する. |
||||||||||||||||
(4)データのインポート
i) クリップボード(メモリ)経由のとき |
(B) Excel上のデータで右図の変数名(x1〜x3)を含めずに黄色で示したデータ部分だけをコピーした場合には「ファイル内に変数名あり」のチェックを外す. ii) の場合は,右図(A)の方法で列ラベル=変数名をセットしておくことが重要.これがないと1行目がデータラベルに取り込まれて,正方行列ではなくなる. |
||||||||||||||||
(5)Rコンソールにコマンドを入力するExcel以外にウインドウが3個または4個開いている状態になっているので,そのうちの「R console」ウインドウに右のコマンドを入力する.データセットDatasetの固有値と固有ベクトルを求めて,データセットyに代入する. y<-eigen(Dataset)(6)固有値・固有ベクトルを出力する データセット y の中身を表示すればよい. y |
※Rでのデータセット名としてDataset以外の名前にしているときは,Datasetをその名前に書き換える:たとえばy<-eigen(D) ※例えば y<-eigen(D) によってデータセットDの固有値・固有ベクトルを求めたものがyというデータセットに入力されるので, 2つ目のコマンド y によってその中身である固有値と固有ベクトルが表示される. |
||||||||||||||||
○表示されるもの 右のように表示されたとき,$valueが固有値を表す. (固有値だけを表示したいときは,y$valueと入力する.) $vectorsの列ベクトルが各固有値に対応する固有ベクトルを表す.(右の3列目はExcelの場合と同様に非常に小さな数の場合において指数表示になっている.) 固有べクトルは規格化(大きさを1にすること)されているので,例えば固有値6に対する固有ベクトルが整数値で表されるベクトル t(7,5,-10) に対応していることに気づくのは難しいかもしれない. 同様にして右の例では固有値5に対する固有ベクトルはt(2,1,-3) ,固有値2に対する固有ベクトルはt(-1,1,0) になっている. |
> y $values [1] 6 5 2 $vectors [,1] [,2] [,3] [1,] 0.5306686 -0.5345225 -7.071068e-01 [2,] 0.3790490 -0.2672612 7.071068e-01 [3,] -0.7580980 0.8017837 1.950852e-16 |
||||||||||||||||
■練習問題■ 次の各正方行列について固有値と固有ベクトルを求めよ. (1)
|
$values [1] 6.000000e+00 -3.000000e+00 -4.018708e-17 ⇒固有値 6, -3, 0$vectors [,1] [,2] [,3] [1,] -0.1825742 0.8728716 0.4082483 [2,] 0.3651484 0.2182179 -0.8164966 [3,] 0.9128709 -0.4364358 0.4082483 ⇒この固有ベクトルは,整数値では |
||||||||||||||||
(2)
|
$values [1] 6.000000e+00 3.000000e+00 1.000000e+00 1.328004e-15 ⇒固有値 6, 3, 1, 0$vectors [,1] [,2] [,3] [,4] [1,] -0.1714986 -0.5 0.5 0.5883484 [2,] -0.6859943 -0.5 0.5 0.3922323 [3,] 0.1714986 0.5 0.5 0.5883484 [4,] 0.6859943 0.5 0.5 0.3922323 ⇒この固有ベクトルは,整数値では |
||||||||||||||||
固有値や固有ベクトルが虚数となる場合でも求めることができる. (3)
|
$values [1] 3+2i 3-2i $vectors [,1] [,2] [1,] 0.7071068+0.0000000i 0.7071068+0.0000000i [2,] 0.0000000+0.7071068i 0.0000000-0.7071068i ⇒この固有ベクトルは,整数係数では |