當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python SciPy linalg.cholesky_banded用法及代碼示例


本文簡要介紹 python 語言中 scipy.linalg.cholesky_banded 的用法。

用法:

scipy.linalg.cholesky_banded(ab, overwrite_ab=False, lower=False, check_finite=True)#

Cholesky 分解帶狀 Hermitian 正定矩陣

矩陣 a 以 lower-diagonal 或上對角有序形式存儲在 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) 數組

帶狀矩陣

overwrite_ab 布爾型,可選

丟棄 ab 中的數據(可能會提高性能)

lower 布爾型,可選

是較低形式的矩陣。 (默認為大寫形式)

check_finite 布爾型,可選

是否檢查輸入矩陣是否僅包含有限數。禁用可能會提高性能,但如果輸入確實包含無窮大或 NaN,則可能會導致問題(崩潰、非終止)。

返回

c (u + 1, M) 數組

a的Cholesky分解,與ab相同的帶狀格式

例子

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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.linalg.cholesky_banded。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。