求僞逆的三種方法:直接,SVD,QR

求僞逆的三種方法:直接,SVD,QR - [專業理論]

版權聲明:轉載時請以超鏈接形式標明文章原始出處和作者信息及本聲明http://www.blogbus.com/shijuanfeng-logs/238839798.html

① 直接求解:

求導,令導數爲0,結果如下: InvA=(ATA)-1AT

 % 直接求僞逆
 InvA = inv(A'*A)*A';

 

② SVD求解

%% SVD分解求僞逆
% 原理和公式:1. SVD分解得到的矩陣:U和V是正交陣,S是對角陣
%            2. 正交陣的逆=轉置
%            3. 對角陣的逆=非零元素求倒
% Step1: 求解A的SVD分解
 [U,S,V] = svd(A); % A = U*S*V'
% Step2: 將S中的非零元素求倒
 T=S;
 T(find(S~=0)) = 1./S(find(S~=0));
% Step3: 求invA
svdInvA = V * T' * U';

 

③ QR求解

%% QR分解求僞逆
% 適用於稀疏矩陣
% 原理和公式:1. QR分解得到的矩陣:Q是正交陣,R是非奇異上三角陣
%            2. 正交陣的逆=轉置
%            3. 上(下)三角矩陣的逆也仍然是上(下)三角矩陣。不必用高斯消去法,向前替換法解方程。
%               但是具體的我不知道怎麼用程序來寫,這裏仍舊用了matlab的函數。
[Q,R] = qr(A);
InvR =  inv(R'*R)*R';
qrInvA =InvR*Q';

 

PS: 矩陣中非零元素的個數遠遠小於矩陣元素的總數,並且非零元素的分佈沒有規律,則稱該矩陣爲稀疏矩陣(sparse matrix)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章