Example: Singular Value Decomposition of a Matrix
The singular value decomposition of a matrix is performed. The rank of the matrix is also computed.
import com.imsl.math.*;
public class SVDEx1 {
public static void main(String args[]) throws SVD.DidNotConvergeException {
double a[][] = {
{1, 2, 1, 4},
{3, 2, 1, 3},
{4, 3, 1, 4},
{2, 1, 3, 1},
{1, 5, 2, 2},
{1, 2, 2, 3}
};
// Compute the SVD factorization of A
SVD svd = new SVD(a);
// Print U, S and V.
new PrintMatrix("U").print(svd.getU());
new PrintMatrix("S").print(svd.getS());
new PrintMatrix("V").print(svd.getV());
// Find the rank of A.
int rank = svd.getRank();
System.out.println("rank = "+rank);
}
}
Output
U
0 1 2 3 4 5
0 -0.38 0.12 0.439 -0.565 0.024 -0.573
1 -0.404 0.345 -0.057 0.215 0.809 0.119
2 -0.545 0.429 0.051 0.432 -0.572 0.04
3 -0.265 -0.068 -0.884 -0.215 -0.063 -0.306
4 -0.446 -0.817 0.142 0.321 0.062 -0.08
5 -0.355 -0.102 -0.004 -0.546 -0.099 0.746
S
0
0 11.485
1 3.27
2 2.653
3 2.089
V
0 1 2 3
0 -0.444 0.556 -0.435 0.552
1 -0.558 -0.654 0.277 0.428
2 -0.324 -0.351 -0.732 -0.485
3 -0.621 0.374 0.444 -0.526
rank = 4
Link to Java source.