求解线性方程组(SVD,QR,Gauss,LU)

曲线拟合过程中,需要求解线性方程组,下面谈谈线性方程组的求解方法:

1)svd求解

对于齐次线性方程 A*X =0; 当A的行数大于列数时,就需要求解最小二乘解,在||X||=1的约束下,其最小二乘解为矩阵A'A最小特征值所对应的特征向量。求解方法有两种(matlab):
1.  [ V D] =eig(A' *A); D为A' *A的特征值对角矩阵,V为对应的特征向量。找到最小特征值对应的V中的特征向量即为最小二乘解。
2. 使用SVD分解矩阵A,[U S V] = svd(A); 因为根据马毅的书中的附录介绍,U 由 A*A'的 特征向量组成,V 由 A'*A的 特征向量组成,因此,奇异值矩阵S中最小的奇异值对应的V中的奇异向量即为最小二乘解。

    对于超定方程(非齐次线性方程的一种)的最小二乘解的情况。 A*X =b ;  当A的行数大于列数时,就需要求解最小二乘解,具体的数学原理不清楚,在matlab中使用一个左除命令就可以得到最小二乘意义下的解。这个解没有模制的限制,就是实际的解。  matlab: A\b

3. SVD

任意矩阵A (mxn), 都能被奇异值分解为:

 求解线性方程组(SVD,QR,Gauss,LU)_第1张图片

A = U *Σr *V

其中, Umxm的正交矩阵, Vnxn的正交矩阵,Σr是由r个沿对角线从大到小排列的奇异值组成的方阵.r就是矩阵A的秩.

4. Moore-Pseudo逆

任意矩阵A, 若存在矩阵X, 使得:

AXA = A    ; XAX = X;  (AX) ^T = AX;    (XA)^T = XA

则称XA的Moore-Pseudo逆, 简称广义逆, 记为A+.

矩阵A的广义逆是唯一的, 并且可以利用A的SVD分解进行计算. 令A的SVD分解为:


不难验证

 

5. 线性最小二乘问题

考虑线性方程组Ax=b, 求其最小二乘解.

如果A的秩是n, 则其唯一解是A+b; 如果秩小于n, 则有无穷多解, 其中的最小范数解仍然是A+b. 我们通常关心的也就是这个解.

参考链接:http://blog.163.com/liuhongwei1006@126/blog/static/830464442011311156073/

http://oliver.zheng.blog.163.com/blog/static/14241159520136156748151/

2)QR求解

QR分解主要针对上海森伯格阵的全部特征值问题和计算对称三对角矩阵的全部特征值问题

任意矩阵A(m * n)

QR分解后A = QR, 其中Q是M*M正交阵,R是M*N阵,当M》N时,R阵是三角阵,是矩阵A的特征值,通过特征值进而求解特征向量。

延伸一下,QR分解也用于求解最小二乘问题。

3)Gauss消去法求解线性方程组

这个不多说了,找本线性代数书看看就懂

4)LU分解求线性方程组

贴个链接:http://blog.163.com/shichangting303@126/blog/static/46434626201042711311239/






你可能感兴趣的:(math)