r语言中正定矩阵由于误差不正定_矩阵的几种分解方式

34fde4d41fb477a4d2168cbadb79ae30.png

A = LU

这实际上就是我们解矩阵方程组一般使用的方式,比如方程组是:

我们一般把它写成增广矩阵:

然后化简成阶梯型矩阵的形式,这个时候可以方便的算出

,然后再往上代回,逐渐得到所有的x。

如果我们实际来 coding,可能会出现的问题:

为0, 或者
,那么我们化简第二行时
可能会误差很大

解决的办法就是行交换,把比较大的pivot放在前面。其实这个我们手动解

的时候就会这样做。

这个方法叫做 Gaussian elimination with partial pivoting (GEPP). 实际上 Matlab 中用的一般也就是这个办法来解

, 当然在 Matlab 中我们一般如果要解答可以直接用 x = Ab 就可以知道了,不过我们如果想知道的明确 L,U矩阵我们可以 [L, U] = lu(A). 当然其实严密一点来说是如果我们用 [L,U] = lu(A)得到的这个L是一个permutaed lower triangle matrix,再加上交换才是严格的lower triangle,也就是 [L, U, P] = lu(A).

比如矩阵:

>> 

e442620dac951f809b832ef65d1c2b1f.png

A = QR

Q 代表的是正交矩阵,这里的 R 是 upper triangle 矩阵:

>> 

我们可以通过 Gram–Schmidt 完成 QR 分解。

fc0a05a2e47dd64ab4367b40c3923c6f.png

正交矩阵当然是具有很多很好特性的矩阵,比如:

  • det(Q) = ±1, 如果 det(Q) = 1 则为旋转变换,说起旋转变换又会想到SO(n) 李群和李代数
  • 可以给我们提供一组正交基

当矩阵是一个实对称矩阵S(symmetric)的时候,我们可以把它分解成:

正交矩阵Q、 对角矩阵Λ(特征值)、正交矩阵的转置

这个分解叫特征分解(Eigendecomposition),又称谱分解(Spectral decomposition),因为 Q 中是特征向量, Λ 中是特征值,

是跟
这些特征值对应的特征向量。

6d54825f7f1e3fe1ad7c3a87197c0df6.png

当然在 Matlab中我们还是用 [V, D] = eig(S) 可以得到它的对应矩阵 Q 和 Λ.

>> 

SVD - 奇异值分解(singular value decomposition),之前写过PCA(主成分分析) 和 SVD (奇异值分解)。

Matlab 中使用:

>> 

Cholesky分解,当 A 是一个SPD (real Symmetric positive definite matrix)的时候,我们可以把它分解成 lower triangle 矩阵 L 和它的转置也就是 upper triangle

.

bd2a6f1c76fa565559c4f0e8533ac5b4.png
>> 

如果 A 可以对角化,那么 A 可以分解成

。 依旧可以使用特征值分解来解决这个问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值