我正在使用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
我真的很感激有关它为何会发生的任何建议或见解。谢谢!
答案 0 :(得分:0)
你把X和Y轴混淆了一些地方(行与列)我不确定哪一个是正确的。如果“调试”输出是由toString()
生成的,那可能是正确的。