0
我使用Jama來計算特徵向量和特徵值,它的工作很好。用矩陣表示矩陣作爲使用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());
}
}
Wheares結果是:
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
我真的很感激,關於爲什麼會發生任何建議或見解。謝謝!
這不是問題所在。 我希望是這樣,但我發現一個更嚴重的問題。 對於矩陣{{1,0,1,0},{0,1,0,0},{1,0,0,0},{0,0,1,1}} 調試器和兩個輸出中是相同的: 1.618033988749894: V1 = -0.6479361632942984 0.0 -0.40044657145607854 -0.6479361632942985 -0.6180339887498949: V2 = 0.4880538916195737 0.0 -0.7896877849821275 0.4880538916195736 1.0: V3 = 2.220446049250313E-16 0.0 1.2054651028791157E-16 1.4142135623730951 1.0 : v4 = 0.0 1.0 0.0 0.0}。 它是有問題的變量類型:什麼是雙2.220446049250313E-16或1.2054651028791157E-16? – Maoritzio
尺寸看起來不一樣。我會假設值小於| x | <1e-15將被打印爲0. –
嘿,彼得,謝謝你的幫助! 我必須問 - 你是怎麼想出邊界| x | <1e-15? – Maoritzio