数值计算矩阵浅析
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数值计算矩阵浅析相关的知识,希望对你有一定的参考价值。
对于一个m*n的矩阵A,其实质就是一个映射,譬如对于一个n维的矢量x,Am*nx就是将x从n维映射到m维空间。如果A是一个正交矩阵,则A就代表一个旋转,即用A中的列向量作为一组正交基,重新表示x.
一、正交矩阵
Un*n的正交矩阵 <=> U-1=UT
- |U| = ±1
- U的各行(列)为单位向量且相互正交
- 保范性,即||x|| = ||Ux||,若U为正交矩阵
前两条容易理解,现在证明第三条,||x||表示x的欧式长度,||x|| = (xTx)1/2, 保范性就是矢量x乘以一个正交矩阵,其范数保持不变,假设U为正交矩阵:
||Ux||2 = (Ux)T(Ux) = xTUTUx = xTx = ||x||2
二、矩阵的RQ分解
矩阵的RQ分解是指将一个矩阵A分解成RQ两个矩阵相乘的形式,即A = RQ,其中R(Right)为上三角矩阵,Q为正交矩阵。与RQ分解类似的有QL、LQ、QR分解。
1、Givens矩阵实现
以3维Givens矩阵为例,通过计算的到c和s(具体见MVG附录),按步骤依次对三维矩阵A右乘某个Givens矩阵使A的左下角的各个值为0
例如:AQ1Q2Q3 = R A = RQ3TQ2TQ1T = RQ (其中Q = Q3TQ2TQ1T )
2、HouseHold矩阵实现
HuserHold矩阵实现RQ分解和Givens类似,都是利用特殊矩阵来实现,具体见MVG附录。
三、对称和反对称矩阵
如果A T = A,称A为对称矩阵;如果A T = -A,称A为对反称矩阵。
以3*3的反对称矩阵为例,任何3*3的反对称矩阵A,都能找到一个适当的向量a,A = [a]x.
两个3维矢量a、b的叉乘:a*b = [a]xb = (aT[b]x)T
四、特征值分解(EVD)
对任意方阵An*n,都可以分解成 A n*n = PDP-1.
若A是实对称矩阵的话,则有A n*n = UDUT,其中U为正交矩阵。若对矢量x做一个A映射,即Ax = UDUTx ,即将A映射分解成三个映射,先做UTx,将x用A的特征向量来表示,再做DUTx,由于D是对角矩阵,对角线上的元素为各个特征向量所对应的特征值,那么该映射表示在新的基上把x做拉伸或压缩(特征值大于1做拉伸,小于1做压缩),最后再用U映射会原来的基。
五、Choleshy分解
对于任意正定实对称矩阵A都能分解成KKT,即A = KKT,其中K为对角元素全为正的上三角矩阵。
证明:A为实对称矩阵,故 A = UDUT
因为A正定,故D对角线上的元素全为正值,故D可写成D = EET,其中E为对角阵,对角线元素值为D的平方根
则A = UEETUT = UE(UE)T,记V = UE,则A = VVT
对V进行RQ分解,V = KQ, 则A = KQQTKT = KKT(因为Q为正交矩阵)
以上证明的过程也为Choleshy分解的过程。这只是一种构造性方法,还有更加高效的方法,见MVG附录。
六、奇异值分解(SVD)
特征值分解只能分解方阵,那对于非方阵则采用SVD分解,设A为m*n的矩阵,则
A m*n = Um*mDm*nVn*nT
其中U和V都为正交矩阵,D为对角矩阵,且可知D对角线上的元素为ATA的特征值得平方根,V中的列向量为其特征值所对应的特征向量。
证明:首先ATA为半正定的,即特征值大于等于0.
A = UDVT
则ATA = VDTUTUDVT = VD2VT
证毕。
注意:SVD是非常有用的矩阵分解方法,用SVD可以干很多事:
- 求(超定)方程组的根
- 图像压缩
- 矩阵分解
- 求伪逆
七、伪逆
对可逆矩阵求逆比较简单,但对不可逆的矩阵矩阵如何求伪逆呢?
定义:对于对角矩阵D,其伪逆为D+:
D+ii = 0,如果Dii = 0
D+ii = Dii-1,若果Dii ≠ 0
那么对于m*n的矩阵A,其伪逆为:
A + = VD+UT
以上是关于数值计算矩阵浅析的主要内容,如果未能解决你的问题,请参考以下文章
2022-2023 春学期 矩阵与数值分析 C3 矩阵分析基础
GPU可以用于Android Environmement上的数值计算(复矩阵乘法)吗?
R语言(数值列表矩阵)上应用函数(sqrtroundmeanlog)将矩阵所有数据求对数就矩阵整体的均值使用apply函数计算矩阵matrix的行均值列均值trim设置返回结果精度
R语言(数值列表矩阵)上应用函数(sqrtroundmeanlog)将矩阵所有数据求对数就矩阵整体的均值使用apply函数计算矩阵matrix的行均值列均值trim设置返回结果精度