求超定方程组最小二乘解的三种方法

1.超定线性方程组与最小二乘解

    超定线性方程组:方程的个数大于解个数,方程组是无解的,但是我们可以求得其最小二乘解。

2.求解超定方程组的三种方法

    此处使用的三种求解方法为:SVD分解,QR分解,正规矩阵(normal equation)。在这三种方程中,SVD分解通常准确率最高,但是速度最慢;正规矩阵速度最快,但是准确率最低;QR分解位于两者之间。当方程组中的常数矩阵发生微小的扰动时,会导致最终的结果发生较大的变化,这种结果的不稳定不是因为方程求解的方法,而是方程组矩阵本身的问题。这回给我们带来很大的危害,例如像上面的情况,计算机求解出现舍入误差,矩阵本身不好的话会直接导致结果失败。
当对矩阵A或者b进行小扰动的时候,最后影响结果的是 ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ A − 1 ∣ ∣ ||A|| \cdot ||A^{-1}||∣∣A∣∣⋅∣∣A
−1
∣∣,与矩阵病态性成正相关。定义矩阵的条件数 c o n d ( A ) = ∣ ∣ A ∣ ∣ ⋅ ∣ ∣ A − 1 ∣ ∣ cond(A)= ||A|| \cdot ||A^{-1}||cond(A)=∣∣A∣∣⋅∣∣A
−1
∣∣ 来描述矩阵的病态程度,一般认为小于100的为良态,条件数在100到1000之间为中等程度的病态,条件数超过1000存在严重病态。以上面的矩阵A为例,采用2范数的条件数 c o n d ( A ) = 222.9955 cond(A)=222.9955cond(A)=222.9955 矩阵处于中等病态程度。

3.参考链接

0.超定线性方程组:https://zhuanlan.zhihu.com/p/166060195
1.Eigen求最小二乘解:https://blog.csdn.net/weixin_46581517/article/details/105178304
2.C++通过Eigen库实现最小二乘法的三种方法:https://blog.csdn.net/weijimin1/article/details/109184998
3.【动手学MVG】矩阵分解与线性方程组的关系,求解线性方程组实战代码:https://blog.csdn.net/a435262767/article/details/108774141
4.SVD的应用:求解Ax=b:https://blog.csdn.net/a435262767/article/details/108774141

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值