32 lines
810 B
Java
32 lines
810 B
Java
import java.util.Arrays;
|
|
|
|
public class Cholesky {
|
|
public static double[][] chol(double[][] a){
|
|
int m = a.length;
|
|
double[][] l = new double[m][m]; //automatically initialzed to 0's
|
|
for(int i = 0; i< m;i++){
|
|
for(int k = 0; k < (i+1); k++){
|
|
double sum = 0;
|
|
for(int j = 0; j < k; j++){
|
|
sum += l[i][j] * l[k][j];
|
|
}
|
|
l[i][k] = (i == k) ? Math.sqrt(a[i][i] - sum) :
|
|
(1.0 / l[k][k] * (a[i][k] - sum));
|
|
}
|
|
}
|
|
return l;
|
|
}
|
|
|
|
public static void main(String[] args){
|
|
double[][] test1 = {{25, 15, -5},
|
|
{15, 18, 0},
|
|
{-5, 0, 11}};
|
|
System.out.println(Arrays.deepToString(chol(test1)));
|
|
double[][] test2 = {{18, 22, 54, 42},
|
|
{22, 70, 86, 62},
|
|
{54, 86, 174, 134},
|
|
{42, 62, 134, 106}};
|
|
System.out.println(Arrays.deepToString(chol(test2)));
|
|
}
|
|
}
|