矩阵分解----Cholesky分解
矩阵分解是将矩阵拆解成多个矩阵的乘积,常见的分解方法有 三角分解法、QR分解法、奇异值分解法。三角分解法是将原方阵分解成一个上三角矩阵和一个下三角矩阵,这种分解方法叫做LU分解法。进一步,如果待分解的矩阵A是正定的,则A可以唯一的分解为
\[{\bf{A = L}}{{\bf{L}}^{\bf{T}}}\]
其中L是下三角矩阵。下面以三维矩阵进行简单说明:
\[\begin{array}{ccccc}
{\bf{A = L}}{{\bf{L}}^{\bf{T}}}{\rm{ = }} & \left[ {\begin{array}{*{20}{c}}
{{L_{11}}}&0&0\\
{{L_{21}}}&{{L_{22}}}&0\\
{{L_{31}}}&{{L_{32}}}&{{L_{33}}}
\end{array}} \right]\left[ {\begin{array}{*{20}{c}}
{{L_{11}}}&{{L_{21}}}&{{L_{31}}}\\
0&{{L_{22}}}&{{L_{32}}}\\
0&0&{{L_{33}}}
\end{array}} \right]\\
= & \left[ {\begin{array}{*{20}{c}}
{L_{11}^2}&{}&{\left( {symmetric} \right)}\\
{{L_{21}}{L_{11}}}&{L_{21}^2 + L_{22}^2}&{}\\
{{L_{31}}{L_{11}}}&{{L_{31}}{L_{21}} + {L_{32}}{L_{22}}}&{L_{31}^2 + L_{32}^2 + L_{33}^2}
\end{array}} \right]\\
= & \left[ {\begin{array}{*{20}{c}}
{{A_{11}}}&{{A_{12}}}&{{A_{13}}}\\
{{A_{21}}}&{{A_{22}}}&{{A_{23}}}\\
{{A_{31}}}&{{A_{32}}}&{{A_{33}}}
\end{array}} \right]
\end{array}\]
由上式可以得到
\[{\bf{L}} = \left[ {\begin{array}{*{20}{c}}
{\sqrt {{A_{11}}} }&0&0\\
{\frac{{{A_{21}}}}{{{L_{11}}}}}&{\sqrt {{A_{22}} - L_{21}^2} }&0\\
{\frac{{{A_{31}}}}{{{L_{11}}}}}&{\frac{{{A_{32}} - {L_{31}}{L_{21}}}}{{{L_{22}}}}}&{\sqrt {{A_{33}} - L_{31}^2 - L_{32}^2} }
\end{array}} \right]\]
进一步进行多维扩展得到实数矩阵分解的表达式为
\[\begin{array}{l}
{L_{j,j}} = \sqrt {{A_{j,j}} - \sum\limits_{k = 1}^{j - 1} {L_{j,k}^2} } \\
{L_{i,j}} = \frac{{\left( {{A_{i,j}} - \sum\limits_{k = 1}^{j - 1} {{L_{i,k}}{L_{j,k}}} } \right)}}{{{L_{j,j}}}}for,i > j
\end{array}\]
对于复数矩阵可以得到类似的公式
\[\begin{array}{l}
{L_{j,j}} = \sqrt {{A_{j,j}} - \sum\limits_{k = 1}^{j - 1} {{L_{j,k}}L_{j,k}^ * } } \\
{L_{i,j}} = \frac{{\left( {{A_{i,j}} - \sum\limits_{k = 1}^{j - 1} {{L_{i,k}}L_{j,k}^ * } } \right)}}{{{L_{j,j}}}}for,i > j
\end{array}\]
上式过程叫做Cholesky分解,由公式可知,该方法存在开根号的操作,在硬件实现中复杂度较高。一般采用LDL分解法来规避这个问题。
矩阵分解----Cholesky分解的更多相关文章
- cholesky分解
接着LU分解继续往下,就会发展出很多相关但是并不完全一样的矩阵分解,最后对于对称正定矩阵,我们则可以给出非常有用的cholesky分解.这些分解的来源就在于矩阵本身存在的特殊的 结构.对于矩阵 ...
- 矩阵分解-----LDL分解
若一个矩阵A是正定的,那么该矩阵也可以唯一分解为\[{\bf{A = LD}}{{\bf{L}}^{\bf{T}}}\] 其中L是对角元素都为1的下三角矩阵,D是对角元素都为正数的对角矩阵.还是以三维 ...
- Cholesky分解 平方根法
一种矩阵运算方法,又叫Cholesky分解.所谓平方根法,就是利用对称正定矩阵的三角分解得到的求解对称正定方程组的一种有效方法.它是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解.它要 ...
- MATLAB矩阵的LU分解及在解线性方程组中的应用
作者:凯鲁嘎吉 - 博客园http://www.cnblogs.com/kailugaji/ 三.实验程序 五.解答(按如下顺序提交电子版) 1.(程序) (1)LU分解源程序: function [ ...
- 矩阵的SVD分解
转自 http://blog.csdn.net/zhongkejingwang/article/details/43053513(实在受不了CSDN的广告) 在网上看到有很多文章介绍SVD的,讲的也都 ...
- Cholesky分解(Cholesky decomposition / Cholesky )
Cholesky decomposition In linear algebra, the Cholesky decomposition or Cholesky is a decomposition ...
- 矩阵的QR分解
#include <cstdio> #include <cstdlib> #include <algorithm> #include <cmath> # ...
- 线性代数笔记10——矩阵的LU分解
在线性代数中, LU分解(LU Decomposition)是矩阵分解的一种,可以将一个矩阵分解为一个单位下三角矩阵和一个上三角矩阵的乘积(有时是它们和一个置换矩阵的乘积).LU分解主要应用在数值分析 ...
- 矩阵的QR分解(三种方法)Python实现
1.Gram-Schmidt正交化 假设原来的矩阵为[a,b],a,b为线性无关的二维向量,下面我们通过Gram-Schmidt正交化使得矩阵A为标准正交矩阵: 假设正交化后的矩阵为Q=[A,B],我 ...
随机推荐
- MySQL应用架构优化-实时数据处理
1.1. 场景 在和开发人员做优化的时候,讨论最多的应该是结合应用场景编写出合适的SQL.并培训开发应该如何编写SQL让MySQL的性能尽量好.但是有一些的场景对于SQL的优化是行不通的. 打个比方, ...
- SSH批量分发管理
ssh服务认证类型主要有两个: 基于口令的安全验证: 基于口令的安全验证的方式就是大家一直在用的,只要知道服务器的ssh连接账户.口令.IP及开发的端口,默认22,就可以通过ssh客户端登陆到这台远程 ...
- python3.6和pip3安装
CenOS7 安装依赖环境 yum -y install openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc 编译 ...
- 【转】Spring学习---Spring IoC容器的核心原理
[原文] Spring的两个核心概念:IoC和AOP的雏形,Spring的历史变迁和如今的生态帝国. IoC和DI的基本概念 IoC(控制反转,英文含义:Inverse of Control)是Spr ...
- Spring Boot session与cookie的使用
Session import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import ...
- php输出年份
Copyright <?php echo date('Y');?> by Creditease Corp.All Right Reserved.
- unity3D iTween的使用
iTween是一个动画库,作者创建它的目的就是最小的投入实现最大的产出.让你做开发更轻松,用它能够轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等 到官网看看 http://itwe ...
- BZOJ1922:[SDOI2010]大陆争霸(最短路)
Description 在一个遥远的世界里有两个国家:位于大陆西端的杰森国和位于大陆东端的 克里斯国.两个国家的人民分别信仰两个对立的神:杰森国信仰象征黑暗和毁灭 的神曾·布拉泽,而克里斯国信仰象征光 ...
- eclipse中文版官方下载
目前eclipse的使用已经越来越广泛,它不仅应用于Java开发中,对于C++开发.php开发的程序员们也是非常喜爱.eclipse中文版下载其实是eclipse官方网站提供的中文包,默认情况下ecl ...
- php 数据集转换树、递归重组节点信息多维数组(转)
一.将数据集转换成树 /** * 将返回的数据集转换成树 * @param array $list 数据集 * @param string $pk 主键 * @param string $pid 父节 ...