我正在使用jama计算SVD.效果很好.如果我通过方矩阵.例如2×2或3×3等矩阵.但是当我通过类似2×3或4×8的东西时
错误.我用了他们所有的例子.他们有不同的构造函数来执行工作.我的第二个问题是,我将3×3矩阵与
double[][] vals = {{1.,1.,0},{1.,0.,1.},{1.,3.,4.},{6.,4.,8.}};
Matrix A = new Matrix(vals);
它产生以下错误:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
之后,我想使用另一个如下的构造函数
double[][] vals = {{1.,1.,0,4},{1.,0.,1.,2},{1.,3.,4.,8},{1.,3.,4.,8}};
Matrix A = new Matrix(vals,4,3);
它产生了以下输出:
A =
1.0 1.0 0.0
1.0 0.0 1.0
1.0 3.0 4.0
6.0 4.0 8.0
A = U S V^T
U =
0.078 -0.115 -0.963
0.107 -0.281 0.260
0.402 0.886 -0.018
0.906 -0.351 0.060
Sigma =
11.861881 0.000000 0.000000
0.000000 2.028349 0.000000
0.000000 0.000000 1.087006
V =
0.507705 -0.795196 -0.331510
0.413798 0.562579 -0.715735
0.755650 0.226204 0.614675
rank = 3
condition number = 10.912437186202627
2-norm = 11.86188091889931
singular values =
11.861881 2.028349 1.087006
它适用于非正方形矩阵.但是它为svd产生了错误的结果,因为V和S没有相同的row = 4(如果我不能正确分析结果,因为我是SVD的新手,对此我感到抱歉).任何想法?
我该怎么办?