###前提
初めて、質問させていただきますport_sanです。
隣接行列の中に含まれる非連結グラフの行番号を調べるためにjava8でラプラシアンの固有値と固有ベクトルをapache commons mathのバージョン3.6.1を用いて計算したのですが、ラプラシアン行列が
{{1,-1,0,0,0,0,0,0,0}, {-1,3,0,0,-1,0,0,0,-1}, {0,0,0,0,0,0,0,0,0}, {0,0,0,1,0,0,-1,0,0}, {0,-1,0,0,2,-1,0,0,0}, {0,0,0,0,-1,2,-1,0,0}, {0,0,0,-1,0,-1,3,-1,0}, {0,0,0,0,0,0,-1,1,0}, {0,-1,0,0,0,0,0,0,1}}
ラプラシアン行列固有値、ベクトルの検算に使用したサイト(wolfram alpha)
の時、上記のサイトで固有ベクトルの成分が0になるところが私が書いたプログラムではなりませんでした。
###実現したいこと
ラプラシアン行列の固有値が0の時の固有ベクトルの成分が、正規化前が0か1だったのかの判定を行うにはどのようにすればいいでしょうか。
よろしくお願いします。
###該当のソースコード
java
1import org.apache.commons.math3.linear.EigenDecomposition; 2import org.apache.commons.math3.linear.MatrixUtils; 3import org.apache.commons.math3.linear.RealMatrix; 4import org.apache.commons.math3.linear.RealVector; 5 6public class ApacheCommonsMathMartixTest { 7 8 public static void main(String[] args) { 9 test(); 10 } 11 12 public static void test() { 13 double[][] d = {{1,-1,0,0,0,0,0,0,0}, 14 {-1,3,0,0,-1,0,0,0,-1}, 15 {0,0,0,0,0,0,0,0,0}, 16 {0,0,0,1,0,0,-1,0,0}, 17 {0,-1,0,0,2,-1,0,0,0}, 18 {0,0,0,0,-1,2,-1,0,0}, 19 {0,0,0,-1,0,-1,3,-1,0}, 20 {0,0,0,0,0,0,-1,1,0}, 21 {0,-1,0,0,0,0,0,0,1}}; 22 RealMatrix l = MatrixUtils.createRealMatrix(d); 23 EigenDecomposition ed = new EigenDecomposition(l); 24 double eig[] = ed.getRealEigenvalues(); 25 for (int i = 0; i < eig.length; i++) { 26 RealVector rv = ed.getEigenvector(i); 27 System.out.printf("固有値 : %f, 固有ベクトル : %s\n", 28 eig[i] , rv.toString()); 29 } 30 } 31}
##実行結果
固有値 : 4.342923, 固有ベクトル : {0.16065758; -0.5370659325; 0; -0.16065758; 0.3999230778; -0.3999230778; 0.5370659325; -0.16065758; 0.16065758} 固有値 : 4.000000, 固有ベクトル : {-0.2041241452; 0.6123724357; 0; -0.2041241452; -0.2041241452; -0.2041241452; 0.6123724357; -0.2041241452; -0.2041241452} 固有値 : 2.470683, 固有ベクトル : {-0.2051288855; 0.3016796508; 0; 0.2051288855; 0.569941812; -0.569941812; -0.3016796508; 0.2051288855; -0.2051288855} 固有値 : 1.000000, 固有ベクトル : {-0.6194524332; 0; 0; 0.3091611877; -0.0503590556; -0.0503590556; 0; -0.2588021321; 0.6698114888} 固有値 : 1.000000, 固有ベクトル : {0.3717392698; -0; 0; 0.3284343818; -0.5720454059; -0.5720454059; 0; 0.2436110241; 0.2003061361} 固有値 : 1.000000, 固有ベクトル : {0.2478344844; 0; -0; 0.6163469398; 0.0596770677; 0.0596770677; 0; -0.6760240075; -0.3075115521} 固有値 : 0.186393, 固有ベクトル : {0.4267449852; 0.3472024949; 0; -0.4267449852; 0.1234012271; -0.1234012271; -0.3472024949; -0.4267449852; 0.4267449852} 固有値 : 0.000000, 固有ベクトル : {-0.3524973751; -0.3524973751; 0.0772321473; -0.3524973751; -0.3524973751; -0.3524973751; -0.3524973751; -0.3524973751; -0.3524973751} 固有値 : -0.000000, 固有ベクトル : {0.0273056875; 0.0273056875; 0.997013137; 0.0273056875; 0.0273056875; 0.0273056875; 0.0273056875; 0.0273056875; 0.0273056875}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。