Bootstrap

正定对称矩阵的 Cholesky 分解

正定对称矩阵的Cholesky分解是一种特殊的矩阵分解方法,它将一个正定对称矩阵 (A) 分解为一个下三角矩阵 (K) 和其转置 (K^T) 的乘积 即 A = K K T 即 A = KK^T A=KKT
这里,矩阵 (K) 的对角元素都是正数。Cholesky分解在解决线性方程组、计算矩阵的逆以及进行数值优化等问题中非常有效,尤其是当矩阵规模较大时。

在这里插入图片描述

在这里插入图片描述

具体例子:

假设有一个 3 * 3 的正定对称矩阵 (A) 如下:

A = ( 4 2 1 2 5 1 1 1 2 ) A = \begin{pmatrix} 4 & 2 & 1 \\ 2 & 5 & 1 \\ 1 & 1 & 2 \end{pmatrix} A= 421251112

我们来逐步进行Cholesky分解:

步骤 1: 初始化下三角矩阵 K ,并设置 K 11 = A 11 。 初始化下三角矩阵 K,并设置 K_{11} = \sqrt{A_{11}}。 初始化下三角矩阵K,并设置K11=A11

K = ( 4 0 0 0 0 0 0 0 0 ) = ( 2 0 0 0 0 0 0 0 0 ) K = \begin{pmatrix} \sqrt{4} & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix} = \begin{pmatrix} 2 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \end{pmatrix} K= 4 00000000 = 200000000

步骤 2: 用 (K) 的第一列计算 (A) 的第二行和第三行的第一项,然后解出 (K) 的第二个对角元素:

K 22 = A 22 − K 21 2 = 5 − 2 2 = 1 = 1 K_{22} = \sqrt{A_{22} - K_{21}^2} = \sqrt{5 - 2^2} = \sqrt{1} = 1 K22=A22K212 =522 =1 =1

现在 (K) 变为:
K = ( 2 0 0 0 1 0 0 0 0 ) K = \begin{pmatrix} 2 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{pmatrix} K= 200010000

接下来计算 K 21 和 K 31 : 接下来计算 K_{21}和 K_{31}: 接下来计算K21K31

K 21 = A 12 K 11 = 2 2 = 1 , K 31 = A 13 K 11 = 1 2 K_{21} = \frac{A_{12}}{K_{11}} = \frac{2}{2} = 1, \quad K_{31} = \frac{A_{13}}{K_{11}} = \frac{1}{2} K21=K11A12=22=1,K31=K11A13=21

更新 (K):

K = ( 2 0 0 1 1 0 1 2 0 0 ) K = \begin{pmatrix} 2 & 0 & 0 \\ 1 & 1 & 0 \\ \frac{1}{2} & 0 & 0 \end{pmatrix} K= 2121010000

步骤 3: 使用 (K) 的前两列计算 (A) 的剩余元素,并解出 (L) 的最后一个对角元素和非对角元素:

K 33 = A 33 − K 31 2 − K 32 2 = 2 − ( 1 2 ) 2 − 0 = 7 4 = 7 2 K_{33} = \sqrt{A_{33} - K_{31}^2 - K_{32}^2} = \sqrt{2 - \left(\frac{1}{2}\right)^2 - 0} = \sqrt{\frac{7}{4}} = \frac{\sqrt{7}}{2} K33=A33K312K322 =2(21)20 =47 =27

同时计算 K 32 : 同时计算 K_{32}: 同时计算K32

K 32 = A 23 − K 21 K 31 L 22 = 1 − 1 ∗ 1 2 1 = 1 2 K_{32} = \frac{A_{23} - K_{21}K_{31}}{L_{22}} = \frac{1 - 1*\frac{1}{2}}{1} = \frac{1}{2} K32=L22A23K21K31=11121=21

最终的 (K) 为:

K = ( 2 0 0 1 1 0 1 2 1 2 7 2 ) K = \begin{pmatrix} 2 & 0 & 0 \\ 1 & 1 & 0 \\ \frac{1}{2} & \frac{1}{2} & \frac{\sqrt{7}}{2} \end{pmatrix} K= 212101210027

现在,如果我们将 K 与其转置 K T 相乘,应得到原始矩阵 A : 现在,如果我们将K与其转置 K^T 相乘,应得到原始矩阵 A: 现在,如果我们将K与其转置KT相乘,应得到原始矩阵A

K K T = ( 2 0 0 1 1 0 1 2 1 2 7 2 ) ( 2 1 1 2 0 1 1 2 0 0 7 2 ) = A KK^T = \begin{pmatrix} 2 & 0 & 0 \\ 1 & 1 & 0 \\ \frac{1}{2} & \frac{1}{2} & \frac{\sqrt{7}}{2} \end{pmatrix} \begin{pmatrix} 2 & 1 & \frac{1}{2} \\ 0 & 1 & \frac{1}{2} \\ 0 & 0 & \frac{\sqrt{7}}{2} \end{pmatrix} = A KKT= 212101210027 200110212127 =A

通过上述步骤,我们完成了正定对称矩阵 (A) 的Cholesky分解。

;