曲線擬合過程中,需要求解線性方程組,下面談談線性方程組的求解方法:
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), 都能被奇異值分解爲:
A = U *Σr *V
其中, U是mxm的正交矩陣, V是nxn的正交矩陣,Σr是由r個沿對角線從大到小排列的奇異值組成的方陣.r就是矩陣A的秩.
4. Moore-Pseudo逆
任意矩陣A, 若存在矩陣X, 使得:
AXA = A ; XAX = X; (AX) ^T = AX; (XA)^T = XA
則稱X是A的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/