Функция linalg.cholesky
Функция linalg.cholesky выполняет разложение Холецкого
для симметричной положительно определённой матрицы.
Результатом является нижняя треугольная матрица L,
такая что исходная матрица A равна произведению
L * L^T.
Функция принимает один обязательный параметр - квадратную
матрицу, для которой выполняется разложение.
Синтаксис
np.linalg.cholesky(a)
Пример
Давайте выполним разложение Холецкого для простой симметричной положительно определённой матрицы размером 2x2:
import numpy as np
a = np.array([[4, 2], [2, 3]])
L = np.linalg.cholesky(a)
print(L)
Результат выполнения кода:
[[2. 0. ]
[1. 1.41421356]]
Пример
Теперь выполним разложение для матрицы размером 3x3 и проверим, что исходная матрица восстанавливается обратным умножением:
import numpy as np
a = np.array([[25, 15, 5], [15, 18, 0], [5, 0, 11]])
L = np.linalg.cholesky(a)
reconstructed = L @ L.T
print(reconstructed)
Результат выполнения кода:
[[25. 15. 5.]
[15. 18. 0.]
[ 5. 0. 11.]]
Пример
Если матрица не является положительно определённой,
функция выбрасывает исключение LinAlgError.
Рассмотрим это на примере:
import numpy as np
a = np.array([[1, 2], [2, 1]])
try:
L = np.linalg.cholesky(a)
except np.linalg.LinAlgError as e:
print("Error:", e)
Результат выполнения кода:
"Error: Matrix is not positive definite"