Hi,
I am using the SingularValueDecomposition class with a matrix but it gives
me a different result than R. My knowledge of SVD is limited, so any advice
is welcomed.
Here's the method in Java
public void svdTest(){
double[][] x = {
{1.0, -0.053071807862720116, 0.04236086650321309},
{0.05307180786272012, 1.0, 0.0058054424137053435},
{-0.04236086650321309, -0.005805442413705342, 1.0}
};
RealMatrix X = new Array2DRowRealMatrix(x);
SingularValueDecomposition svd = new SingularValueDecomposition(X);
RealMatrix U = svd.getU();
for(int i=0;i<U.getRowDimension();i++){
for(int j=0;j<U.getColumnDimension();j++){
System.out.print(U.getEntry(i,j) + " ");
}
System.out.println();
}
System.out.println();
System.out.println();
RealMatrix V = svd.getV();
for(int i=0;i<V.getRowDimension();i++){
for(int j=0;j<V.getColumnDimension();j++){
System.out.print(V.getEntry(i,j) + " ");
}
System.out.println();
}
}
And here's the function in R.
x<-matrix(c(
1.0, -0.053071807862720116, 0.04236086650321309,
0.05307180786272012, 1.0, 0.0058054424137053435,
-0.04236086650321309, -0.005805442413705342, 1.0),
nrow=3, byrow=TRUE)
svd(x)
Does anyone know why I am getting different results for U and V? I am using
commons math 3.1.
Thanks,
Patrick