Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void cholesky(Matrix A) {
- if (!checkMatrixIsSymmetric(A, 0.01)) {
- throw new RuntimeException("Matrix is not symmetric");
- }
- int N = A.getColumnDimension();
- Matrix L = new Matrix(N, N);
- for (int i = 0; i < N; i++) {
- for (int j = 0; j <= i; j++) {
- double sum = 0.0;
- for (int k = 0; k < j; k++) {
- sum += L.get(i, k) * L.get(j, k);
- }
- if (i == j)
- L.set(i, i, Math.sqrt(A.get(i, i) - sum));
- else L.set(i,j,(1.0 / L.get(j,j) * (A.get(i,j)) - sum));
- }
- if (L.get(i,i) <= 0) {
- throw new RuntimeException("Matrix not positive definite");
- }
- }
- L.print(6,5);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement