矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。常见的矩阵分解有LU分解(三角分解)、QR分解(正交变换)、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。

 

(1) LU分解(三角分解)

矩阵的LU分解就是将一个矩阵表示为一个交换下三角矩阵和一个上三角矩阵的乘积形式。线性代数中已经证明,只要方阵A是非奇异(即行列式不等于0)的,LU分解总是可以进行的。

MATLAB提供的lu函数用于对矩阵进行LU分解,其调用格式为:

[L,U]=lu(X):产生一个上三角阵U和一个变换形式的下三角阵L(行交换),使之满足X=LU。注意,这里的矩阵X必须是方阵。

[L,U,P]=lu(X):产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,使之满足PX=LU。当然矩阵X同样必须是方阵。

(设P 是一个 m×n 的 (0,1) 矩阵,如 m≤n且 P*P′=E,则称 P为一个 m×n的置换矩阵。)

实现LU分解后,线性方程组Ax=b的解x=U\(L\b)或x=U\(L\Pb),这样可以大大提高运算速度。

 

例7-2  用LU分解求解例7-1中的线性方程组。

命令如下:

A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];

b=[13,-9,6,0]';

[L,U]=lu(A);

x=U\(L\b)

或采用LU分解的第2种格式,命令如下:

[L,U ,P]=lu(A);

x=U\(L\P*b)

 

(2) QR分解(正交变换)

对矩阵X进行QR分解,就是把X分解为一个正交矩阵Q和一个上三角矩阵R的乘积形式。QR分解只能对方阵进行。MATLAB的函数qr可用于对矩阵进行QR分解,其调用格式为:

[Q,R]=qr(X):产生一个一个正交矩阵Q和一个上三角矩阵R,使之满足X=QR

[Q,R,E]=qr(X):产生一个一个正交矩阵Q、一个上三角矩阵R以及一个置换矩阵E,使之满足XE=QR。

实现QR分解后,线性方程组Ax=b的解x=R\(Q\b)或x=E(R\(Q\b))。

 

例7-3  用QR分解求解例7-1中的线性方程组。

命令如下:

A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];

b=[13,-9,6,0]';

[Q,R]=qr(A);

x=R\(Q\b)

或采用QR分解的第2种格式,命令如下:

[Q,R,E]=qr(A);

x=E*(R\(Q\b))

 

(3) Cholesky分解

如果矩阵X是对称正定的,则Cholesky分解将矩阵X分解成一个下三角矩阵和上三角矩阵的乘积。设上三角矩阵为R,则下三角矩阵为其转置,即X=R'R。MATLAB函数chol(X)用于对矩阵X进行Cholesky分解,其调用格式为:

R=chol(X):产生一个上三角阵R,使R'R=X。若X为非对称正定,则输出一个出错信息。

[R,p]=chol(X):这个命令格式将不输出出错信息。当X为对称正定的,则p=0,R与上述格式得到的结果相同;否则p为一个正整数。如果X为满秩矩阵,则R为一个阶数为q=p-1的上三角阵,且满足R'R=X(1:q,1:q)。

实现Cholesky分解后,线性方程组Ax=b变成R‘Rx=b,所以x=R\(R’\b)。

 

例7-4  用Cholesky分解求解例7-1中的线性方程组。

命令如下:

A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];

b=[13,-9,6,0]';

R=chol(A)

??? Error using ==> chol

Matrix must be positive definite

命令执行时,出现错误信息,说明A为非正定矩阵。

(4) 任意方阵的Schur分解

任意一个n阶方阵X可以分解为X=URU',其中U为酉矩阵,R为上三角schur矩阵且其主对角线上的元素为X的特征值。

酉矩阵的相关性质:

  设有A,B矩阵

  (1)若A是酉矩阵,则A的逆矩阵也是酉矩阵

  (2)若A,B是酉矩阵,则AB也是酉矩阵

  (3)若A是酉矩阵,则|detA|=1

  (4)A是酉矩阵的充分必要条件是,它的n个列向量是两两正交的单位向量

[U,R]=schur(X)

(5) 任意方阵的Hessenberg分解

任意一个n阶方阵X可以分解为X=PHP', 其中P为酉矩阵, H的第一子对角线下的元素均为0,即H为Hessenberg矩阵。

[P,H]=hess(X)

(6) 任意方阵的特征值分解EVD

任意一个n阶方阵X可以分解为XV=VD,其中D为X的特征值对角阵,V为X的特征向量矩阵。

[V,D]=eig(X)

[V,D]=eig(X,Y)计算广义特征值矩阵D和广义特征值向量矩阵V,使得XV=YVD。

(7)任意矩阵的奇异值分解SVD

任意一个m*n维的矩阵X可以分解为X=USV',U,V均为酉矩阵,S为m*n维的对角矩阵,其对角线元素为X的从大到小排序的非负奇异值。U,V为正交阵,S为对角阵,svd(A)恰好返回S的对角元素,而且就是A的奇异值(定义为:矩阵A’*A的特征值的算数平方根)

[U,S,V]=svd(X)

(8) 任意矩阵的几何均值分解GMD

任意矩阵m*n维的矩阵X可以分解为X=QRP', Q,P均为酉矩阵,R为k*k维的实正线上三角矩阵,其主对角线元素均等于X的所有K个正奇异值的几何均值,k=rank(X)。

(PS: 一个n × n的实对称矩阵 M 是正定的当且仅当对于所有的非零实系数向量z,都有 zTMz > 0。其中zT 表示z的转置。

对于复数的情况,定义则为:一个n × n的埃尔米特矩阵 M 是正定的当且仅当对于每个非零的复向量z,都有z*Mz > 0。其中z* 表示z的共轭转置。由于 M是埃尔米特矩阵,经计算可知,对于任意的复向量z,z*Mz必然是实数,从而可以与0比较大小。因此这个定义是自洽的。正定方阵M的所有的特征值 λi都是正的。)

matlab矩阵分解相关推荐

  1. matlab 矩阵分解

    矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积.常见的矩阵分解有LU分解.QR分解.Cholesky分解,以及Schur分解.Hessenberg分解.奇异分解等. (1) LU ...

  2. 【MATLAB】矩阵运算之矩阵分解

    矩阵分解:把一个矩阵分解成为矩阵连乘的形式. 矩阵的分解函数 chol Cholesky分解 cholinc 稀疏矩阵的不完全Cholesky分解 lu 矩阵LU分解 luinc 稀疏矩阵的不完全LU ...

  3. matlab 中的矩阵分解

    矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积.常见的矩阵分解有LU分解(三角分解).QR分解(正交变换).Cholesky分解,以及Schur分解.Hessenberg分解.奇 ...

  4. matlab矩阵特征分解,用MATLAB实现矩阵分解

    MATLAB求解线性方程的过程基于三种分解法则: (1)Cholesky分解,针对对称正定矩阵: (2)高斯消元法,  针对一般矩阵: (3)正交化,      针对一般矩阵(行数≠列数) 这三种分解 ...

  5. Matlab 矩阵论 矩阵分解的计算实现(六)矩阵的正交三角分解

    Matlab 矩阵论 矩阵分解的计算实现(六)矩阵的正交三角分解 本来matlab中自带了做正交三角分解的函数,[U,R]=qr(A),U R为分解结果.但是这样使用只会有结果没有中间过程,所以写了一 ...

  6. Matlab:矩阵分解

    Matlab:矩阵分解 简介 Cholesky 分解 LU 分解 QR 分解 对分解使用多线程计算 简介 本节中讨论的所有三种矩阵分解利用了三角形矩阵,其中对角线上下的所有元素都为零.涉及三角矩阵的线 ...

  7. matlab中服从高斯分布的矩阵_推荐基础算法之矩阵分解PMF

    推荐基础算法之矩阵分解PMF 大多数存在的协同过滤算法不能处理以下两种情况: 1. 不能处理大规模数据 2.不能处理评分非常少的用户数据 概率矩阵分解模型可以解决大规模.稀疏且不平衡的数据.这篇文章主 ...

  8. 低秩矩阵RPCA MATLAB,低秩矩阵分解

    [实例简介] 低秩矩阵分解代码,inexact alm [实例截图] [核心代码] inexactalm └── inexact alm ├── inexact_alm_rpca │   ├── ch ...

  9. matlab lud矩阵分解,MIT线性代数总结笔记——LU分解

    MIT线性代数总结笔记--LU分解 矩阵分解 矩阵分解(Matrix Factorizations)就是将一个矩阵用两个以上的矩阵相乘的等式来表达.而矩阵乘法涉及到数据的合成(即将两个或多个线性变换的 ...

最新文章

  1. Numpy之N维数组-ndarray
  2. NHibernate 基本配置 (第一篇)
  3. 先序序列为a、b、c、d的不同二叉树的个数是多少(卡特兰数)
  4. 红帽Linux故障定位技术详解与实例(1)
  5. python selenium 获取同一元素的多个属性_python+selenium如何获取元素中并列的属性值?...
  6. 在批评数据湖的时候,你有没有想过,它并不是取代数据仓库的
  7. mongodb 3.0版本安装
  8. 移动平台前端开发总结(针对iphone,Android等手机)
  9. Python项目--飞机作战完整版(附带图片素材)
  10. excel转word后表格超出页面_原来Excel和Word还能这样互转,完全不会格式错乱!
  11. mysql 需要什么硬件配置_Mysql的硬件优化和配置优化
  12. PCB多层板层的设置原则
  13. 游戏制作之路(3)Blender制作极简动画
  14. 解决炉石传说战网无法更新问题
  15. Ecshop系统二次开发教程及流程演示
  16. 人工神经网络基本构成有哪些具有什么特征
  17. 电脑版适合什么插件HTML,推荐一些好用的Chrome插件
  18. Excel在线常用工具
  19. Mysql分组取每组排序后第一个
  20. 支持Apple pay支付的设备

热门文章

  1. android4.2添加重启菜单项
  2. Wince6 RIL层移植
  3. python遍历文件夹下所有文件大小_python遍历文件夹——两种遍历本地文件记录文件夹个数、文件数及文件大小的方法...
  4. Win32_16来看看标准菜单和右键菜单的玩法
  5. 牛客练习赛9 B - 珂朵莉的值域连续段
  6. 《众妙之门——Web用户体验设计与可用性测试》一2.3 总结
  7. 51nod 1836:战忽局的手段(期望)
  8. 同时10万个事务在线,读写频繁,数据库该如何设计
  9. 网站性能优化之应用程序缓存-初篇
  10. SQL 2005单用户启动实例