数値演算ライブラリ SCILABのbdiag を使って、

  block diagonalization  固有値
  generalized eigen-vectors 固有ベクトル

を求めることができる。


正方行列SSの固有値と固有ベクトルを求めるサンプルのtest2.sciを以下に示す。

SS=[ 1.140159E-02 3.012054E-03 3.167597E-04 9.230288E-03 4.598495E-03 2.916046E-03 1.627292E-03 3.066867E-03 -3.098527E-03 1.777800E-03 -1.105347E-03 -5.588697E-04 -1.156607E-03 -3.433799E-03 -3.804200E-03 1.858197E-03 -1.368458E-03 1.708054E-03 -1.185454E-03 -1.533753E-03 -4.189145E-03 -7.750174E-04 -2.642385E-04;
3.012054E-03 3.233568E-03 1.168701E-04 1.432348E-03 1.086955E-03 -2.247700E-04 -4.389852E-04 7.919551E-04 -1.662972E-03 -3.908795E-04 -7.509329E-04 1.664489E-04 -1.021491E-04 -6.507768E-04 -1.038457E-04 2.013678E-04 -6.252563E-04 6.802223E-04 -4.279462E-04 -6.313751E-04 -5.865699E-04 1.878031E-04 1.877193E-04;
3.167597E-04 1.168701E-04 1.453586E-04 3.011534E-05 -7.567972E-05 -1.812023E-04 7.564138E-05 -2.144382E-05 -1.269288E-04 -1.517265E-04 -6.226530E-05 -5.341072E-05 4.289314E-05 -1.081434E-04 6.351989E-05 2.867168E-05 -1.230506E-06 -1.989994E-05 -2.043091E-05 -1.847431E-04 -1.570852E-04 -4.651540E-06 -6.793758E-05;
9.230288E-03 1.432348E-03 3.011534E-05 1.620698E-02 6.995066E-03 4.845977E-03 3.138506E-03 2.236428E-03 -3.246689E-03 5.103241E-03 1.079000E-03 3.409622E-04 -6.027029E-04 -4.185911E-03 -2.483685E-03 4.191688E-03 6.305962E-04 4.317899E-03 -3.480722E-04 -1.624686E-04 -2.862725E-03 2.218442E-04 1.954520E-03;
4.598495E-03 1.086955E-03 -7.567972E-05 6.995066E-03 7.034931E-03 1.611308E-03 1.051071E-03 2.076152E-03 -2.576800E-03 1.106738E-03 7.734508E-04 -3.151122E-04 -1.365003E-03 -2.109622E-03 -2.486172E-03 5.947336E-04 -3.327417E-04 1.428460E-03 -9.570153E-04 -6.104303E-05 -2.682422E-03 -1.101314E-04 2.266380E-04;
2.916046E-03 -2.247700E-04 -1.812023E-04 4.845977E-03 1.611308E-03 6.631137E-03 3.286659E-03 1.447043E-03 1.273421E-03 3.100860E-03 7.329974E-04 1.199857E-03 -1.083389E-03 -9.494214E-04 -6.148859E-04 4.294800E-04 -7.095814E-04 1.091956E-03 -7.003974E-04 1.737207E-04 -9.276595E-04 -4.322856E-04 4.215296E-04;
1.627292E-03 -4.389852E-04 7.564138E-05 3.138506E-03 1.051071E-03 3.286659E-03 4.396642E-03 -3.608096E-04 2.388283E-04 1.370777E-03 -2.124101E-04 2.150207E-04 -2.857453E-04 -1.491840E-03 -3.716212E-04 -1.980680E-04 -6.724667E-04 3.291526E-04 -2.124571E-04 -2.531740E-04 -9.078710E-04 -4.487994E-04 7.021324E-05;
3.066867E-03 7.919551E-04 -2.144382E-05 2.236428E-03 2.076152E-03 1.447043E-03 -3.608096E-04 6.589901E-03 -5.655367E-04 7.492681E-04 6.694389E-04 -9.429699E-04 -1.444292E-03 -1.409382E-04 -2.590695E-03 7.372134E-04 -1.275994E-03 -2.027100E-04 -1.921022E-03 -9.853837E-04 -2.581552E-03 -9.301125E-04 -1.321806E-03;
-3.098527E-03 -1.662972E-03 -1.269288E-04 -3.246689E-03 -2.576800E-03 1.273421E-03 2.388283E-04 -5.655367E-04 6.288360E-03 -4.174849E-04 -2.086355E-04 3.651178E-05 -1.011561E-03 7.270857E-04 2.962727E-04 -5.223779E-04 -7.031651E-04 -1.323816E-03 -8.840306E-04 4.472259E-05 2.701451E-04 -9.797335E-04 -1.240156E-03;
1.777800E-03 -3.908795E-04 -1.517265E-04 5.103241E-03 1.106738E-03 3.100860E-03 1.370777E-03 7.492681E-04 -4.174849E-04 7.214350E-03 5.359642E-04 1.131823E-03 1.000727E-04 -1.153346E-03 -4.340349E-04 2.885765E-03 4.669233E-04 2.006089E-03 6.214751E-04 -2.125683E-05 4.275011E-04 6.995799E-04 8.182992E-04;
-1.105347E-03 -7.509329E-04 -6.226530E-05 1.079000E-03 7.734508E-04 7.329974E-04 -2.124101E-04 6.694389E-04 -2.086355E-04 5.359642E-04 4.810843E-03 1.612652E-04 3.393114E-04 1.015656E-03 -1.572501E-04 5.415591E-05 2.195496E-03 -1.708576E-04 4.000006E-04 1.783151E-04 1.921024E-04 7.120514E-04 7.325664E-04;
-5.588697E-04 1.664489E-04 -5.341072E-05 3.409622E-04 -3.151122E-04 1.199857E-03 2.150207E-04 -9.429699E-04 3.651178E-05 1.131823E-03 1.612652E-04 3.714706E-03 -8.311402E-04 3.145701E-04 1.115374E-03 -1.889832E-04 9.490087E-04 1.571062E-03 -1.571512E-04 2.802928E-04 8.764570E-04 4.676863E-04 1.090297E-03;
-1.156607E-03 -1.021491E-04 4.289314E-05 -6.027029E-04 -1.365003E-03 -1.083389E-03 -2.857453E-04 -1.444292E-03 -1.011561E-03 1.000727E-04 3.393114E-04 -8.311402E-04 4.405993E-03 -1.098817E-03 2.016583E-03 5.777140E-04 9.011096E-04 -2.370715E-04 2.242853E-03 -1.122977E-04 1.850341E-03 1.291159E-03 1.253926E-03;
-3.433799E-03 -6.507768E-04 -1.081434E-04 -4.185911E-03 -2.109622E-03 -9.494214E-04 -1.491840E-03 -1.409382E-04 7.270857E-04 -1.153346E-03 1.015656E-03 3.145701E-04 -1.098817E-03 6.614883E-03 1.149948E-04 -4.002884E-04 1.006755E-03 -7.368480E-04 5.784574E-04 1.810199E-03 1.110774E-03 8.943221E-04 -2.409407E-04;
-3.804200E-03 -1.038457E-04 6.351989E-05 -2.483685E-03 -2.486172E-03 -6.148859E-04 -3.716212E-04 -2.590695E-03 2.962727E-04 -4.340349E-04 -1.572501E-04 1.115374E-03 2.016583E-03 1.149948E-04 7.221815E-03 -1.604461E-03 1.208700E-03 3.410949E-04 1.086223E-03 6.110279E-04 3.808349E-03 1.306760E-03 1.733702E-03;
1.858197E-03 2.013678E-04 2.867168E-05 4.191688E-03 5.947336E-04 4.294800E-04 -1.980680E-04 7.372134E-04 -5.223779E-04 2.885765E-03 5.415591E-05 -1.889832E-04 5.777140E-04 -4.002884E-04 -1.604461E-03 6.934314E-03 3.309074E-04 1.628942E-03 8.422150E-04 -3.236991E-04 -5.891962E-05 1.808639E-03 1.384421E-03;
-1.368458E-03 -6.252563E-04 -1.230506E-06 6.305962E-04 -3.327417E-04 -7.095814E-04 -6.724667E-04 -1.275994E-03 -7.031651E-04 4.669233E-04 2.195496E-03 9.490087E-04 9.011096E-04 1.006755E-03 1.208700E-03 3.309074E-04 5.856804E-03 6.866603E-04 1.778687E-03 7.140193E-04 1.123368E-03 1.530576E-03 3.057200E-03;
1.708054E-03 6.802223E-04 -1.989994E-05 4.317899E-03 1.428460E-03 1.091956E-03 3.291526E-04 -2.027100E-04 -1.323816E-03 2.006089E-03 -1.708576E-04 1.571062E-03 -2.370715E-04 -7.368480E-04 3.410949E-04 1.628942E-03 6.866603E-04 4.886997E-03 -8.930247E-05 2.299403E-04 6.864247E-04 6.907566E-04 1.670731E-03;
-1.185454E-03 -4.279462E-04 -2.043091E-05 -3.480722E-04 -9.570153E-04 -7.003974E-04 -2.124571E-04 -1.921022E-03 -8.840306E-04 6.214751E-04 4.000006E-04 -1.571512E-04 2.242853E-03 5.784574E-04 1.086223E-03 8.422150E-04 1.778687E-03 -8.930247E-05 4.262546E-03 5.037368E-04 1.770458E-03 1.413337E-03 1.611941E-03;
-1.533753E-03 -6.313751E-04 -1.847431E-04 -1.624686E-04 -6.104303E-05 1.737207E-04 -2.531740E-04 -9.853837E-04 4.472259E-05 -2.125683E-05 1.783151E-04 2.802928E-04 -1.122977E-04 1.810199E-03 6.110279E-04 -3.236991E-04 7.140193E-04 2.299403E-04 5.037368E-04 4.279086E-03 9.294868E-04 1.327237E-05 8.426209E-04;
-4.189145E-03 -5.865699E-04 -1.570852E-04 -2.862725E-03 -2.682422E-03 -9.276595E-04 -9.078710E-04 -2.581552E-03 2.701451E-04 4.275011E-04 1.921024E-04 8.764570E-04 1.850341E-03 1.110774E-03 3.808349E-03 -5.891962E-05 1.123368E-03 6.864247E-04 1.770458E-03 9.294868E-04 5.235859E-03 9.421022E-04 1.449698E-03;
-7.750174E-04 1.878031E-04 -4.651540E-06 2.218442E-04 -1.101314E-04 -4.322856E-04 -4.487994E-04 -9.301125E-04 -9.797335E-04 6.995799E-04 7.120514E-04 4.676863E-04 1.291159E-03 8.943221E-04 1.306760E-03 1.808639E-03 1.530576E-03 6.907566E-04 1.413337E-03 1.327237E-05 9.421022E-04 4.582746E-03 1.541613E-03;
-2.642385E-04 1.877193E-04 -6.793758E-05 1.954520E-03 2.266380E-04 4.215296E-04 7.021324E-05 -1.321806E-03 -1.240156E-03 8.182992E-04 7.325664E-04 1.090297E-03 1.253926E-03 -2.409407E-04 1.733702E-03 1.384421E-03 3.057200E-03 1.670731E-03 1.611941E-03 8.426209E-04 1.449698E-03 1.541613E-03 4.446427E-03];
[KC,KV, BS ]=bdiag(SS,11 )
write( "C:\test3KCout.dat" , KC)
write( "C:\test4KVout.dat" , KV)
write( "C:\test5BSout.dat" , BS)
exit

このサンプルを実際に動作させるためには、おそらく、
ご使用されるプログラミング環境に合わせて修正・変更・追加などが必要です。
万一、このサンプルを動作させる場合は、あなたの責任においておこなってください。



SSは入力となる共分散行列である。
SCILABでも共分散を計算できるようであるが、
今回は、データ量、処理時間、扱い易さなどを考慮して、生データを読みこんで共分散を計算してSCILAB形式の行列を出力するプログラムを作成した。
上記のtest2.sci をscilabに読みこませて実行すると、
ファイル名"C:\test3KCout.dat"に出力される行列の対角成分がSSの固有値になる。
ファイル名"C:\test3KVout.dat"に出力される行列がSSの固有ベクトルの集まりになる。




Home page
No.4b   2006年1月3日