超定线性方程组:方程的个数大于解个数,方程组是无解的,但是我们可以求得其最小二乘解。
此处使用的三种求解方法为: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 矩阵处于中等病态程度。
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
下一篇:Vue-Router路由系统