文字来源:
- C.E. Rasmussen & K.I. Williams, Gaissian Processes for Machine Learning,MIT
- 计算机科学计算,高等教育出版社,张宏伟 等
定义: cholesky分解是一种将任意n阶对称正定矩阵A分解成下三角矩阵L的一种方法:
LLT=A\pmb L\pmb L^T=\pmb ALLLLLLT=AAA其中,L称为Cholesky因子。如果L的对角元均为正数,则L是唯一确定的。
Cholesky分解对于解决带有对称正定系数矩阵A的线性问题非常有效。在计算机中,直接求解Ax=bA\mathbf x=\mathbf bAx=b时间复杂度是很高的(Gauss消元法求解是O(n3)O(n^3)O(n3)),用cholesky法对A提前变换之后再计算会有效降低复杂度。计算方法如下:Ax=b⇒LLTx=b\pmb A\pmb x=\pmb b\Rightarrow\pmb L\pmb L^T\pmb x=\pmb bAAAxxx=bbb⇒LLLLLLTxxx=bbb其等价于{Ly=bLTx=y\begin{cases}
\pmb L\pmb y=\pmb b \\
\pmb L^T\pmb x=\pmb y
\end{cases}{LLLyyy=bbbLLLTxxx=yyy令
(a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2…ann)=(l11l21l22⋮⋮⋱ln1ln2…lnn)(l11l12⋯l1nl22⋯l2n⋱⋮lnn)\begin{pmatrix}
a_{11} & a_{12} & \cdots &a_{1n} \\
a_{21} & a_{22} & \cdots& a_{2n}\\
\vdots &\vdots&\ddots &\vdots\\
a_{n1} & a_{n2} & \dots & a_{nn}
\end{pmatrix}=
\begin{pmatrix}
l_{11} & & & \\
l_{21} & l_{22} & & \\
\vdots &\vdots&\ddots & \\
l_{n1} & l_{n2} & \dots & l_{nn}
\end{pmatrix}
\begin{pmatrix}
l_{11} & l_{12} & \cdots &l_{1n} \\
& l_{22} & \cdots& l_{2n}\\
& &\ddots &\vdots\\
& & & l_{nn}
\end{pmatrix} ⎝⎜⎜⎜⎛a11a21⋮an1a12a22⋮an2⋯⋯⋱…a1na2n⋮ann⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛l11l21⋮ln1l22⋮ln2⋱…lnn⎠⎟⎟⎟⎞⎝⎜⎜⎜⎛l11l12l22⋯⋯⋱l1nl2n⋮lnn⎠⎟⎟⎟⎞则
aij=∑k=1j−1likljk+lijljj,i=j,j+1,⋯ ,n,a_{ij}=\sum_{k=1}^{j-1} l_{ik}l_{jk}+l_{ij}l_{jj}, \quad i=j,j+1,\cdots,n, aij=k=1∑j−1likljk+lijljj,i=j,j+1,⋯,n,则有
ljj=(ajj−∑k=1j−1ljk2)12,l_{jj}=\Bigl(a_{jj}-\sum_{k=1}^{j-1}l_{jk}^2\Bigr)^{\frac{1}{2}},ljj=(ajj−k=1∑j−1ljk2)21,
lij=(aij−∑k=1j−1likljk)/ljj,i=j+1,j+2,⋯ ,nl_{ij}=\Bigl( a_{ij}-\sum_{k=1}^{j-1}l_{ik}l_{jk} \Bigr)/l_{jj}, \quad i=j+1,j+2,\cdots,nlij=(aij−k=1∑j−1likljk)/ljj,i=j+1,j+2,⋯,n计算次序为l11,l21,...,ln1,l22,l32,...,ln2,...,lnn.l_{11},l_{21},...,l_{n1},l_{22},l_{32},...,l_{n2},...,l_{nn}.l11,l21,...,ln1,l22,l32,...,ln2,...,lnn.
注意,正定对称矩阵的行列式可以由下式得出:
∣A∣=∏ni=1Lii2,|A|=\underset{i=1}{\overset{n}{\prod}}L^2_{ii},∣A∣=i=1∏nLii2,或者log∣A∣=2∑ni=1logLii,\log|A|=2\underset{i=1}{\overset{n}{\sum}}\log L_{ii},log∣A∣=2i=1∑nlogLii,其中,L是由A得出的Cholesky因子。
例题
用cholesky方法求解线性方程组Ax=b\pmb A\pmb x=\pmb bAAAxxx=bbb,其中
A=(4−11−14.252.7512.753.5),b=(467.25).\pmb A=
\begin{pmatrix}
4 & -1 & 1 \\
-1 & 4.25 & 2.75\\
1 & 2.75 & 3.5
\end{pmatrix},
\pmb b=
\begin{pmatrix}
4\\ 6\\ 7.25
\end{pmatrix}.AAA=⎝⎛4−11−14.252.7512.753.5⎠⎞,bbb=⎝⎛467.25⎠⎞.
解 显然AT=A\pmb A^T=\pmb AAAAT=AAA,且D1=4>0,D2=16>0,D3=16>0D_1=4>0,D_2=16>0,D_3=16>0D1=4>0,D2=16>0,D3=16>0.因此,A为对称正定矩阵,故存在A=LLT\pmb A=\pmb L\pmb L^TAAA=LLLLLLT.则有:
l11=a11=2, l21=a21l11=−0.5, l31=a31l11=0.5,l22=a22−l212=2,l32=a32−l31l21l22=1.5,l33=a33−l312−l322=1, \begin{aligned}
& l_{11}=\sqrt{a_{11}}=2 , \ l_{21}=\frac{a_{21}}{l_{11}}=-0.5, \ l_{31}=\frac{a_{31}}{l_{11}}=0.5, \\
&l_{22}=\sqrt{a_{22}-l_{21}^2}=2, \\
&l_{32}=\frac{a_{32}-l_{31}l_{21}}{l_{22}}=1.5,\\
&l_{33}=\sqrt{a_{33}-l_{31}^2-l_{32}^2}=1,
\end{aligned}l11=a11=2, l21=l11a21=−0.5, l31=l11a31=0.5,l22=a22−l212=2,l32=l22a32−l31l21=1.5,l33=a33−l312−l322=1,得
L=(2−0.520.51.51).\pmb L=
\begin{pmatrix}
2&&\\
-0.5&2&\\
0.5&1.5&1
\end{pmatrix}.LLL=⎝⎛2−0.50.521.51⎠⎞.再求
{Ly=bLTx=y\begin{cases}
\pmb L\pmb y=\pmb b \\
\pmb L^T\pmb x=\pmb y
\end{cases}{LLLyyy=bbbLLLTxxx=yyy解得x=(1,1,1)T.\pmb x=(1,1,1)^T.xxx=(1,1,1)T.