对称正定矩阵的三角分解
设
A
\ A
A为n阶对称正定矩阵,则
A
\ A
A可以分解为一个单位下三角矩阵
L
~
\ \tilde{L}
L~和一个上三角矩阵
U
~
\ \tilde{U}
U~的乘积:
A
=
L
~
U
~
\ A=\tilde{L} \tilde{U}
A=L~U~
令
D
=
d
i
a
g
(
u
11
~
,
⋯
,
u
n
n
~
)
\ D=diag(\tilde{u_{11}},\cdots, \tilde{u_{nn}})
D=diag(u11~,⋯,unn~),则
U
~
=
D
U
=
D
1
2
D
1
2
U
\ \tilde{U}=DU=D^{\frac{1}{2}}D^{\frac{1}{2}}U
U~=DU=D21D21U
得:
A
=
(
L
~
D
1
2
)
(
D
1
2
U
)
=
L
U
1
\ A=(\tilde{L}D^{\frac{1}{2}})(D^{\frac{1}{2}}U)=LU_1
A=(L~D21)(D21U)=LU1
其中
L
=
L
~
D
1
2
\ L=\tilde{L}D^{\frac{1}{2}}
L=L~D21为非奇异的下三角矩阵,
U
1
=
D
1
2
U
\ U_1=D^{\frac{1}{2}}U
U1=D21U为非奇异的上三角矩阵。因为
A
=
A
T
\ A=A^T
A=AT,所以
L
U
1
=
U
1
T
L
T
\ LU_1=U_1^T L^T
LU1=U1TLT
由于A的分解是唯一的,于是
U
1
=
L
T
\ U_1=L^T
U1=LT
则
A
=
L
L
T
(
1
)
\ A=LL^T \quad (1)
A=LLT(1)
以上就是对成正定矩阵的分解定理
Cholesky分解
设A是对称正定矩阵,则存在对角元全是正数的下三角矩阵L,使(1)存在且唯一,这种分解称为Cholesky分解,假设以算出L的第1至j-1列元素,由(1)得
a
i
j
=
∑
k
=
1
j
−
1
l
i
k
l
j
k
+
l
i
j
l
j
j
(
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)
于是对于j=1,2,…,n 有
l
j
j
=
(
a
j
j
−
∑
k
=
1
j
−
1
l
j
k
2
)
1
2
\ l_{jj}=(a_{jj}-\sum_{k=1}^{j-1}l_{jk}^2)^{\frac{1}{2}}
ljj=(ajj−k=1∑j−1ljk2)21
l
i
j
=
a
i
j
−
∑
k
=
1
j
−
1
l
i
k
l
j
k
l
j
j
(
i
=
j
+
1
,
⋯
,
n
)
\ l_{ij}=\frac{a_{ij}-\sum_{k=1}^{j-1}l_{ik}l_{jk}}{l_{jj}} \quad (i=j+1,\cdots,n)
lij=ljjaij−∑k=1j−1likljk(i=j+1,⋯,n)
规
定
∑
k
=
1
0
l
i
k
l
j
k
=
0
\ 规定 \sum_{k=1}^0 l_{ik}l_{jk}=0
规定k=1∑0likljk=0
Matlab实现矩阵的Cholesky分解
function L = Cholesky(A)
%CHOLESKY 完成对矩阵A的cholesky分解
% input: A -- 要分解的矩阵
% output: L -- A的cholesky分解下三角矩阵
[r, c] = size(A);
L = zeros(r, c);
for j = 1:c
if j == 1
L(j, j) = A(j, j) ^ (1/2);
L(j+1:end, j) = A(j+1:end, j) / L(j, j);
else
L(j, j) = (A(j, j) - sum(L(j, 1:j-1).^2)) .^ (1/2);
L(j+1:end, j) = (A(j+1:end, j) - L(j+1:end, 1:j-1) * L(j, 1:j-1)') / L(j, j);
end
end
end