numpy.linalg.cholesky
numpy.linalg.cholesky(a)
Функция linalg.cholesky() выполняет разложение Холецкого.
Для любой симметричной положительно-определенной матрицы с вещественными элементами A разложение Холецкого записывается как \(A = A = LL^{T}\) (\(L^{T}\) - трпнспонированная матрица), а для матрицы с комплексными элементами \(A = A = LL^{H}\) (\(L^{H}\) - эрмитово-сопряженная матрица). Данная функция возвращает L.
-
- a - M или (…, M, M), где M - массивы NumPy или подобные массивам объекты.
- Данный параметр может принимать как одну матрицу, так и кортеж матриц с одинаковой формой. Матрица должна быть эрмитова или положительно определенной. В случае вещественных элементов она должна быть симметричной.
-
- результат - массив NumPy или кортеж массивов NumPy
- Разложение Холецкого в виде нижней или верхней треугольной матрицы. Если на вход был подан кортеж массивов, то будет возвращен массив их разложений аналогичной длины. Если на входы поданы объекты подкласса matrix, то возвращаются так же объекты matrix.
Замечание
В случае невозможности разложения указанного массива, возникает исключение LinAlgError.
Примеры
>>> import numpy as np
>>>
>>> A = [[2, 1], [1, 2]]
>>>
>>> L = np.linalg.cholesky(A)
>>> L
array([[1.41421356, 0. ],
[0.70710678, 1.22474487]])
>>>
>>> np.dot(L, L.T)
array([[2., 1.],
[1., 2.]])
>>>
>>>
>>> B = [[2, -1], [-1, 2]]
>>>
>>> np.linalg.cholesky((A, B))
array([[[ 1.41421356, 0. ],
[ 0.70710678, 1.22474487]],
[[ 1.41421356, 0. ],
[-0.70710678, 1.22474487]]])
>>>
>>>
>>> Z = [[5, 2 + 1j], [2 - 1j, 7]]
>>>
>>> L = np.linalg.cholesky(Z)
>>> L
array([[2.23606798+0.j , 0. +0.j ],
[0.89442719-0.4472136j, 2.44948974+0.j ]])
>>>
>>> np.dot(L, L.T.conj())
array([[5.+0.j, 2.+1.j],
[2.-1.j, 7.+0.j]])
>>>
>>>
>>> # Объекты подкласса matrix пропускаются:
... A = np.matrix([[4, 1], [1, 4]])
>>>
>>> np.linalg.cholesky(A)
matrix([[2. , 0. ],
[0.5 , 1.93649167]])