私は Jama を使用して固有ベクトルと固有値を計算していますが、うまくいきます。
問題は、行列から配列に列を抽出すると、間違った値になることがあるということです。
誰かがそれに遭遇しましたか?どのように対処すればよいですか?
私が使用したコードを添付しています:
import weka.core.matrix.EigenvalueDecomposition;
import weka.core.matrix.Matrix;
public class Main6 {
public static void main(String[] args) {
double[][] m = {{1,0,1},{0,1,0},{1,1,1}};
EigenvalueDecomposition e = new EigenvalueDecomposition(new Matrix(m));
double[] imgValue = e.getImagEigenvalues();
double[] realValue = e.getRealEigenvalues();
double[] columns = e.getV().getColumnPackedCopy();
int rowDim = e.getV().getRowDimension();
for(int i = 0; i<e.getImagEigenvalues().length; i++){
System.out.println("\n<"+imgValue[i] + "," + realValue[i]+">");
for(int j=i*rowDim;j<(i+1)*rowDim;j++)
System.out.print(columns[j]+" ");
}
System.out.println("\n\n"+e.getV());
}
}
結果は次のとおりです。
OUTPUT:
<0.0,2.0>
0.7071067811865475 0.0 0.7071067811865475
<0.0,0.0>
-0.7071067811865475 0.0 0.7071067811865475
<0.0,1.0>
-1.0 1.0 -2.220446049250313E-16
According to the debugger, the matrix is:
0.71 -0.71 -1
0 0 1
0.71 0.71 0
the matrix is:
1 0 1
0 1 0
1 1 1
なぜそれが起こるのかについてアドバイスや洞察をいただければ幸いです。ありがとう!