python lu分解_[数值计算] QR分解

0. 为什么要用QR分解

equation?tex=Ax%3Db%2C%5C+A%5Cin%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+n%7D 的问题可以分成3类:
  • 情况1:A是方阵,m=n
  • 情况2:A是over-determined的,m>n
  • 情况3:A是under-determined的,m<n

在[数值计算] 条件数的例子2里,遇到的情况1(A是方阵),通过构造拉格朗日插值来使得对A求逆足够稳定。对于一般的情况下,解决思路是使用LU(LUP)分解来解决稳定性问题,在前一篇文中已经简介过了[数值计算] LU分解、LUP分解、Cholesky分解。

对于后两种情况, [数值计算] 数据拟合——线性最小二乘法 分析了用正规方程组求解over-determined以及under-determined的问题。但在文中也提到了,对于over-determined的线性最小二乘问题,正规方程组是不稳定的,通常需要用QR分解来处理

理论很美好,在小数据量的时候没问题,然而直接使用正规方程组求解会在数据量大(e.g. data size > 100)的时候不稳定numerically unstable。原因是 需要对
equation?tex=A%5ETA 求逆,而A我们都知道是Vandermonde矩阵的一部分,本身就是poorly conditioned,而
equation?tex=A%5ETA 只会更糟糕。解决的方法是使用
QR分解,这也是Python MATLAB求解 线性最小二乘 问题的方法。

1. QR分解

1.1 定义

一个矩阵

equation?tex=A+%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+n%7D%2C%5C+m%5Cge+n 可以被分解成
equation?tex=A+%3D+QR ,其中:
  • equation?tex=Q%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+m%7D 是正交矩阵
  • equation?tex=R+%5Cequiv++%5Cbegin%7Bbmatrix%7D+%5Chat%7BR%7D+%5C%5C+0+%5Cend%7Bbmatrix%7D+%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+n%7D
  • equation?tex=%5Chat%7BR%7D+%5Cin+%5Cmathbb%7BR%7D%5E%7Bn%5Ctimes+n%7D 是上三角矩阵

1.2 正交矩阵的性质

  • equation?tex=Q%5ET+Q+%3D+QQ%5ET%3DI
  • 左乘一个正交矩阵对欧式范数的结果不影响(在下面证明eq.2的时候会用到)

equation?tex=%7C%7C+Qv+%7C%7C_2%5E2+%3D+v%5ETQ%5ETQv+%3D+v%5ETv+%3D+%7C%7C+v+%7C%7C_2%5E2+%5Ctag%7B1%7D

1.3 从QR分解角度看线性最小二乘

对于一个over-determined线性最小二乘问题

equation?tex=Ax%5Csimeq+b ,其目标函数是
equation?tex=%5Cbegin%7Balign%7D+%5Cphi%28x%29+%3D+%7C%7C+r%28x%29+%7C%7C_2%5E2+%26%3D+%7C%7C+b+-+Ax+%7C%7C_2%5E2+%3D+%7C%7C+b+-+Q%5Cbegin%7Bbmatrix%7D%5Chat%7BR%7D+%5C%5C+0%5Cend%7Bbmatrix%7D+x+%7C%7C_2%5E2+%5C%5C+%26%3D+%7C%7C+Q%5ET+%28b+-+Q%5Cbegin%7Bbmatrix%7D%5Chat%7BR%7D+%5C%5C+0%5Cend%7Bbmatrix%7D+x%29+%7C%7C_2%5E2+%5C%5C+%26%3D+%7C%7C+Q%5ETb+-+%5Cbegin%7Bbmatrix%7D%5Chat%7BR%7D+%5C%5C+0%5Cend%7Bbmatrix%7D+x+%7C%7C_2%5E2+%5Cend%7Balign%7D+%5Ctag%7B2%7D

这里

equation?tex=Q%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+m%7D
equation?tex=Qb%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+1%7D
equation?tex=%5Cbegin%7Bbmatrix%7D%5Chat%7BR%7D+%5C%5C+0%5Cend%7Bbmatrix%7D+%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+n%7D
equation?tex=%5Cbegin%7Bbmatrix%7D%5Chat%7BR%7D+%5C%5C+0%5Cend%7Bbmatrix%7Dx+%5Cin+%5Cmathbb%7BR%7D%5E%7Bm%5Ctimes+1%7D

如果把

equation?tex=Q%5ETb 拆分成上下两部分,形式
equation?tex=%5Cbegin%7Bbmatrix%7D%5Chat%7BR%7D+%5C%5C+0%5Cend%7Bbmatrix%7D 类似,
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值