求偽逆的三種方法 直接,SVD,QR及具體的應用

2021-08-20 20:45:45 字數 1027 閱讀 1373

① 直接求解:

求導,令導數為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';
解決的問題:

通過(22)和(23)式要求psai_x和psai_y,但是

異矩陣,通過matlab中的pinv()和inv()函式計算的結果誤差較大,於是通過上面提到的三種計算奇異矩陣的偽逆的方法很好的解決了我的問題。

求偽逆的三種方法 直接,SVD,QR及具體的應用

直接求解 求導,令導數為0,結果如下 inva ata 1at 直接求偽逆inva inv a a a svd求解 svd分解求偽逆 原理和公式 1.svd分解得到的矩陣 u和v是正交陣,s是對角陣 2.正交陣的逆 轉置 3.對角陣的逆 非零元素求倒 step1 求解a的svd分解 u,s,v sv...

計算逆矩陣的三種方法

目錄 1.待定係數法 2.伴隨矩陣求逆矩陣 3.初等變換求逆矩陣 矩陣a 1,2 1,3 假設所求的逆矩陣為 a,bc,d 則 從而可以得出方程組 a 2c 1 b 2d 0 a 3c 0 b 3d 1 解得a 3 b 2 c 1 d 1 伴隨矩陣是矩陣元素所對應的代數余子式,所構成的矩陣,轉置後得...

求素數的三種方法

具體篩法是 先把n個自然數按次序排列起來。1不是質數,也不是合數,要划去。第二個數2是質數留下來,而把2後面所有能被2整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下,再把3後面所有能被3整除的數都劃去。3後面第乙個沒劃去的數是5,把5留下,再把5後面所有能被5整除的數都劃去。這樣一直做下去,就...