scipy.linalg.

cholesky_banded#

scipy.linalg.cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True)[источник]#

Разложение Холецкого для ленточной эрмитовой положительно-определенной матрицы

Матрица a хранится в ab либо в нижне-диагональной, либо в верхне-диагональной упорядоченной форме:

ab[u + i - j, j] == a[i,j]        (if upper form; i <= j)
ab[    i - j, j] == a[i,j]        (if lower form; i >= j)

Пример ab (форма a равна (6,6), u=2):

upper form:
*   *   a02 a13 a24 a35
*   a01 a12 a23 a34 a45
a00 a11 a22 a33 a44 a55

lower form:
a00 a11 a22 a33 a44 a55
a10 a21 a32 a43 a54 *
a20 a31 a42 a53 *   *

Документация написана в предположении, что аргументы-массивы имеют указанные «основные» формы. Однако аргументы-массивы этой функции могут иметь дополнительные «пакетные» измерения, добавленные перед основной формой. В этом случае массив обрабатывается как пакет низкоразмерных срезов; см. Пакетные линейные операции подробности.

Параметры:
ab(u + 1, M) array_like

Ленточная матрица

overwrite_abbool, необязательно

Отбросить данные в ab (может повысить производительность)

lowerbool, необязательно

Находится ли матрица в нижней форме. (По умолчанию - верхняя форма)

check_finitebool, необязательно

Проверять ли, что входная матрица содержит только конечные числа. Отключение может повысить производительность, но может привести к проблемам (сбоям, незавершению) если входные данные содержат бесконечности или NaN.

Возвращает:
c(u + 1, M) ndarray

Факторизация Холецкого a, в том же ленточном формате, что и ab

Смотрите также

cho_solve_banded

Решить систему линейных уравнений, учитывая факторизацию Холецкого для ленточной эрмитовой матрицы.

Примеры

>>> import numpy as np
>>> from scipy.linalg import cholesky_banded
>>> from numpy import allclose, zeros, diag
>>> Ab = np.array([[0, 0, 1j, 2, 3j], [0, -1, -2, 3, 4], [9, 8, 7, 6, 9]])
>>> A = np.diag(Ab[0,2:], k=2) + np.diag(Ab[1,1:], k=1)
>>> A = A + A.conj().T + np.diag(Ab[2, :])
>>> c = cholesky_banded(Ab)
>>> C = np.diag(c[0, 2:], k=2) + np.diag(c[1, 1:], k=1) + np.diag(c[2, :])
>>> np.allclose(C.conj().T @ C - A, np.zeros((5, 5)))
True