Perform Cholesky decomposition of a symmetric positive-definite matrix. Decompose matrix A into L * L^T where L is a lower triangular matrix.
from typing import List
def cholesky_decomposition(
matrix: List[List[float]]
) -> List[List[float]]:
n = len(matrix)
L = [[0.0] * n for _ in range(n)]
for i in range(n):
for j in range(i + 1):
s = sum(L[i][k] * L[j][k] for k in range(j))
if i == j:
val = matrix[i][i] - s
if val <= 0:
raise ValueError("Matrix is not positive definite")
L[i][j] = val ** 0.5
else:
L[i][j] = (matrix[i][j] - s) / L[j][j]
return L