0

私は 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

なぜそれが起こるのかについてアドバイスや洞察をいただければ幸いです。ありがとう!

4

1 に答える 1

0

X軸とY軸を混同しています(行と列)、どちらが正しいかわかりません。「デバッグ」出力が生成される場合、toString()それは正しい可能性があります。

于 2012-12-26T11:15:29.703 に答える