Example: QR Factorization of a Matrix
The QR Factorization of a Matrix is performed. A linear system is then solved using the factorization. The rank of the input matrix is also computed.
import com.imsl.math.*;
public class QREx1 {
public static void main(String args[]) throws SingularMatrixException {
double a[][] = {
{1, 2, 4},
{1, 4, 16},
{1, 6, 36},
{1, 8, 64}
};
double b[] = {4.999, 9.001, 12.999, 17.001};
// Compute the QR factorization of A
QR qr = new QR(a);
// Solve Ax = b
double x[] = qr.solve(b);
new PrintMatrix("x").print(x);
// Print Q and R.
new PrintMatrix("Q").print(qr.getQ());
new PrintMatrix("R").print(qr.getR());
// Find the rank of A.
int rank = qr.getRank();
System.out.println("rank = "+rank);
}
}
Output
x
0
0 0.999
1 2
2 -0
Q
0 1 2 3
0 -0.053 -0.542 0.808 -0.224
1 -0.213 -0.657 -0.269 0.671
2 -0.478 -0.346 -0.449 -0.671
3 -0.85 0.393 0.269 0.224
R
0 1 2
0 -75.26 -10.63 -1.594
1 0 -2.647 -1.153
2 0 0 0.359
3 0 0 0
rank = 3
Link to Java source.