numpy.linalg.cholesky

linalg.cholesky(a)[源代码]

胆汁分解。

恢复了胆怯的分解, L * L.H ,平方矩阵的 a 在哪里 L 是下三角形,.h是共轭转置运算符(它是普通转置if a 是真正有价值的)。 a 必须是埃尔米特(对称如果实值)和正定。不执行任何检查来验证 a 是不是隐士。另外,只有下三角形和对角线元素 a 使用。仅限 L 实际返回。

参数
a(…,m,m)数组类

Hermitian(对称,如果所有元素都是实的),正定输入矩阵。

返回
L(…,m,m)数组类

上或下三角胆石系数 a . 返回矩阵对象,如果 a 是矩阵对象。

加薪
LinAlgError

例如,如果分解失败, a 不是肯定的。

参见

scipy.linalg.cholesky

在SciPy中有类似的功能。

scipy.linalg.cholesky_banded

Cholesky分解带状Hermitian正定矩阵。

scipy.linalg.cho_factor

矩阵的Cholesky分解,用于 scipy.linalg.cho_solve .

笔记

1.8.0 新版功能.

广播规则适用,见 numpy.linalg 有关详细信息的文档。

胆怯分解常被用作快速解决问题的方法。

a\mathbf x=\mathbf b

(什么时候 A 是厄米提安的/对称的和正定的)。

首先,我们解决 \mathbf{{y}} 在里面

System Message: WARNING/2 (L\MathBF Y=\MathBF B,)

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2018-12-01> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2018/09/03 v1.4i Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo)) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/usr/share/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Undefined control sequence. <argument> \split@tag \begin {split}L\MathBF Y=\MathBF B,\end {split} l.14 ...n{split}L\MathBF Y=\MathBF B,\end{split} ! Undefined control sequence. <argument> ...ag \begin {split}L\MathBF Y=\MathBF B,\end {split} l.14 ...n{split}L\MathBF Y=\MathBF B,\end{split} ! Package inputenc Error: Unicode character , (U+FF0C) (inputenc) not set up for use with LaTeX. See the inputenc package documentation for explanation. Type H <return> for immediate help. ... l.14 ...n{split}L\MathBF Y=\MathBF B,\end{split} ! Undefined control sequence. <argument> \split@tag \begin {split}L\MathBF Y=\MathBF B,\end {split} l.14 ...n{split}L\MathBF Y=\MathBF B,\end{split} ! Undefined control sequence. <argument> ...ag \begin {split}L\MathBF Y=\MathBF B,\end {split} l.14 ...n{split}L\MathBF Y=\MathBF B,\end{split} ! Package inputenc Error: Unicode character , (U+FF0C) (inputenc) not set up for use with LaTeX. See the inputenc package documentation for explanation. Type H <return> for immediate help. ... l.14 ...n{split}L\MathBF Y=\MathBF B,\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 292 bytes). Transcript written on math.log.

然后为了 \mathbf{{x}} 在里面

System Message: WARNING/2 (L.H\MathBF X=\MathBF Y。)

latex exited with error [stdout] This is pdfTeX, Version 3.14159265-2.6-1.40.19 (TeX Live 2019/dev/Debian) (preloaded format=latex) restricted \write18 enabled. entering extended mode (./math.tex LaTeX2e <2018-12-01> (/usr/share/texlive/texmf-dist/tex/latex/base/article.cls Document Class: article 2018/09/03 v1.4i Standard LaTeX document class (/usr/share/texlive/texmf-dist/tex/latex/base/size12.clo)) (/usr/share/texlive/texmf-dist/tex/latex/base/inputenc.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty For additional information on amsmath, use the `?' option. (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty)) (/usr/share/texlive/texmf-dist/tex/latex/amscls/amsthm.sty) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty)) (/usr/share/texlive/texmf-dist/tex/latex/anyfontsize/anyfontsize.sty) (/usr/share/texlive/texmf-dist/tex/latex/tools/bm.sty) (./math.aux) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd) (/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd) ! Undefined control sequence. <argument> \split@tag \begin {split}L.H\MathBF X=\MathBF Y。\end {split} l.14 ...split}L.H\MathBF X=\MathBF Y。\end{split} ! Undefined control sequence. <argument> ... \begin {split}L.H\MathBF X=\MathBF Y。\end {split} l.14 ...split}L.H\MathBF X=\MathBF Y。\end{split} ! Package inputenc Error: Unicode character 。 (U+3002) (inputenc) not set up for use with LaTeX. See the inputenc package documentation for explanation. Type H <return> for immediate help. ... l.14 ...split}L.H\MathBF X=\MathBF Y。\end{split} ! Undefined control sequence. <argument> \split@tag \begin {split}L.H\MathBF X=\MathBF Y。\end {split} l.14 ...split}L.H\MathBF X=\MathBF Y。\end{split} ! Undefined control sequence. <argument> ... \begin {split}L.H\MathBF X=\MathBF Y。\end {split} l.14 ...split}L.H\MathBF X=\MathBF Y。\end{split} ! Package inputenc Error: Unicode character 。 (U+3002) (inputenc) not set up for use with LaTeX. See the inputenc package documentation for explanation. Type H <return> for immediate help. ... l.14 ...split}L.H\MathBF X=\MathBF Y。\end{split} [1] (./math.aux) ) (see the transcript file for additional information) Output written on math.dvi (1 page, 296 bytes). Transcript written on math.log.

实例

>>> A = np.array([[1,-2j],[2j,5]])
>>> A
array([[ 1.+0.j, -0.-2.j],
       [ 0.+2.j,  5.+0.j]])
>>> L = np.linalg.cholesky(A)
>>> L
array([[1.+0.j, 0.+0.j],
       [0.+2.j, 1.+0.j]])
>>> np.dot(L, L.T.conj()) # verify that L * L.H = A
array([[1.+0.j, 0.-2.j],
       [0.+2.j, 5.+0.j]])
>>> A = [[1,-2j],[2j,5]] # what happens if A is only array_like?
>>> np.linalg.cholesky(A) # an ndarray object is returned
array([[1.+0.j, 0.+0.j],
       [0.+2.j, 1.+0.j]])
>>> # But a matrix object is returned if A is a matrix object
>>> np.linalg.cholesky(np.matrix(A))
matrix([[ 1.+0.j,  0.+0.j],
        [ 0.+2.j,  1.+0.j]])