矩阵分解-----LDL分解
Posted hurenkebi1
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵分解-----LDL分解相关的知识,希望对你有一定的参考价值。
若一个矩阵A是正定的,那么该矩阵也可以唯一分解为[{f{A = LD}}{{f{L}}^{f{T}}}]
其中L是对角元素都为1的下三角矩阵,D是对角元素都为正数的对角矩阵。还是以三维矩阵进行简单说明
[{f{A = LD}}{{f{L}}^{f{T}}} = left[ {egin{array}{*{20}{c}}
1&0&0\
{{L_{21}}}&1&0\
{{L_{31}}}&{{L_{32}}}&1
end{array}}
ight]left[ {egin{array}{*{20}{c}}
{{D_1}}&0&0\
0&{{D_2}}&0\
0&0&{{D_3}}
end{array}}
ight] = left[ {egin{array}{*{20}{c}}
{{D_1}}&{}&{left( {symmetric}
ight)}\
{{L_{21}}{D_1}}&{L_{21}^2{D_1} + {D_2}}&{}\
{{L_{31}}{D_1}}&{{L_{31}}{L_{21}}{D_1} + {L_{32}}{D_2}}&{L_{31}^2{D_1} + L_{32}^2{D_2} + {D_3}}
end{array}}
ight]]
接着按照Cholesky分解推导的思路可以得到下面两个公式,如果待分解的矩阵A是实数,那么
[egin{array}{l}
{D_j} = {A_{j,j}} - sumlimits_{k = 1}^{j - 1} {L_{j,k}^2{D_k}} \
{L_{i,j}} = frac{{left( {{A_{i,j}} - sumlimits_{k = 1}^{j - 1} {{L_{i,k}}{L_{j,k}}{D_k}} }
ight)}}{{{D_j}}}for,i > j
end{array}]
如果待分解的矩阵A是复数,那么
[egin{array}{l}
{D_j} = {A_{j,j}} - sumlimits_{k = 1}^{j - 1} {{L_{j,k}}L_{j,k}^ * {D_k}} \
{L_{i,j}} = frac{{left( {{A_{i,j}} - sumlimits_{k = 1}^{j - 1} {{L_{i,k}}L_{j,k}^ * {D_k}} }
ight)}}{{{D_j}}}for,i > j
end{array}]
由上式可以观察到不存在开根号的操作,所以也叫做“改进的平方根分解法”。
为了方便硬件实现,对上面公式进行进一步优化,引入中间变量
[{u_{i,j}} = {L_{i,j}}{D_j}]
将上面公式改写为
[egin{array}{l}
{D_j} = {A_{j,j}} - sumlimits_{m = 1}^{j - 1} {{u_{j,m}}L_{j,m}^ * ,1 le j le n} \
{u_{i,j}} = {A_{i,j}} - sumlimits_{m = 1}^{j - 1} {{u_{i,m}}L_{j,m}^ * } ,j + 1 le i le n\
{L_{i,j}} = frac{{{u_{i,j}}}}{{{D_j}}},j + 1 le i le n
end{array}]
以上是关于矩阵分解-----LDL分解的主要内容,如果未能解决你的问题,请参考以下文章