我正在使用 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
我真的很感激任何关于它为什么会发生的建议或见解。谢谢!