目录
  1. 1. 【转载】Cholesky分解及一个例子
【转载】Cholesky分解及一个例子

【转载】Cholesky分解及一个例子

原网址:https://blog.csdn.net/qq_41564404/article/details/88085073

文字来源:

  1. C.E. Rasmussen & K.I. Williams, Gaissian Processes for Machine Learning,MIT
  2. 计算机科学计算,高等教育出版社,张宏伟 等

定义: cholesky分解是一种将任意n阶对称正定矩阵A分解成下三角矩阵L的一种方法:

LLT=ALL^T = A

其中,L称为Cholesky因子。如果L的对角元均为正数,则L是唯一确定的。

Cholesky分解对于解决带有对称正定系数矩阵A的线性问题非常有效。在计算机中,直接求解Ax=bA\mathbf x=\mathbf b=b时间复杂度是很高的(Gauss消元法求解是O(n3)O(n3) ),用cholesky法对A提前变换之后再计算会有效降低复杂度。计算方法如下:

Ax=bLLTx=bAx=b \rightarrow LL^T x =b

等价于:

{Ly=bLTx=y\left\{\begin{array}{l} L y=b \\ L^{T} x=y \end{array}\right.

(a11a12a1na21a22a2nan1an2ann)=(l11l21l22ln1ln2lnn)(l11l12l1nl22l2nlnn)\left(\begin{array}{cccc} a_{11} & a_{12} & \cdots & a_{1 n} \\ a_{21} & a_{22} & \cdots & a_{2 n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n 1} & a_{n 2} & \cdots & a_{n n} \end{array}\right)=\left(\begin{array}{cccc} l_{11} & & & \\ l_{21} & l_{22} & & \\ \vdots & \vdots & \ddots & \\ l_{n 1} & l_{n 2} & \dots & l_{n n} \end{array}\right)\left(\begin{array}{cccc} l_{11} & l_{12} & \cdots & l_{1 n} \\ & l_{22} & \cdots & l_{2 n} \\ & & \ddots & \vdots \\ & & & l_{n n} \end{array}\right)

aij=k=1j1likljk+lijljj,i=j,j+1,,na_{i j}=\sum_{k=1}^{j-1} l_{i k} l_{j k}+l_{i j} l_{j j}, \quad i=j, j+1, \cdots, n

则有

ljj=(ajjk=1j1ljk2)12l_{j j}=\left(a_{j j}-\sum_{k=1}^{j-1} l_{j k}^{2}\right)^{\frac{1}{2}}

lij=(aijk=1j1likljk)/ljj,i=j+1,j+2,,nl_{i j}=\left(a_{i j}-\sum_{k=1}^{j-1} l_{i k} l_{j k}\right) / l_{j j}, \quad i=j+1, j+2, \cdots, n

计算次序为l11,l21,,ln1,l22,l32,,ln2,,lnnl_{11},l_{21},\dots,l_{n1},l_{22},l_{32},\dots,l_{n2},\dots,l_{nn}

注意,正定对称矩阵的行列式可以由下式得出:

A=i=1nLii2|A|= \prod_{i=1}^nL_{ii}^2

或者

logA=2i=1nlogLiilog|A| = 2\sum_{i=1}^nlogL_{ii}

其中,LL是由A得出的CholeskyCholesky因子。