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 回答