lower triangular matrix 란 행렬의 diagonal 축을 기준으로 아래 부분에만 행렬의 원소가 0이 아닌 값을 가질 수 있는 경우를 말합니다.
ex)
이때 어떤 행렬 가 위의 두 조건인 1) symmetric matrix, 2) positive definite matrix 조건을 만족한다면 다음과 같이 표현할 수 있습니다.
이때 을 다음의 방법으로 구하는 것을 cholesky decomposition이라고 합니다.
from math import sqrt
def cholesky(A):
n = len(A)
# initialize L
L = [[0.0] * n for i in range(n)]
# Cholesky Decomposition
for j in range(n):
for i in range(j+1):
tmp_sum = sum(L[j][k] * L[i][k] for k in range(i))
if (i == j): # Diagonal elements
L[j][i] = sqrt(A[j][j] - tmp_sum)
else:
L[j][i] = (1.0 / L[i][i] * (A[j][i] - tmp_sum))
return L