numpy.linalg.cholesky

numpy.linalg.cholesky(a)

Функция numpy.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.

Смотрите так же:
qr, svd

Примеры

>>> 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]])