matlab inv,pinv逆與偽逆

2021-07-28 07:32:05 字數 554 閱讀 4674

inv(a)*b

實際上可以寫成

a\bb*inv(a)

實際上可以寫成

b/a這樣比求逆之後帶入精度要高

a\b=pinv(a)*b 

a/b=a*pinv(b)

x=pinv(a),x=pinv(a,tol),其中tol為誤差

pinv是求廣義逆

先搞清楚什麼是偽逆。

對於方陣a,若有方陣b,使得:a·b=b·a=i,則稱b為a的逆矩陣。

如果矩陣a不是乙個方陣,或者a是乙個非滿秩的方陣時,矩陣a沒有逆矩陣,但可以找到乙個與a的轉置矩陣a'同型的矩陣b,使得:

a·b·a=a        

b·a·b=b

此時稱矩陣b為矩陣a的偽逆,也稱為廣義逆矩陣。因此偽逆陣與原陣相乘不一定是單位陣。

當a可逆時,b就是a的逆矩陣,否則就是廣義逆。

滿足上面關係的a,b矩陣,有很多和逆矩陣相似的性質。

如果a為非奇異矩陣的話,雖然計算結果相同,但是pinv會消耗大量的計算時間。

在其他情況下,pinv具有inv的部分特性,但是不完全相同。

協變與逆變

目錄 1.協變 2.逆變 在泛型之前,我們都知道可以將乙個派生類物件賦值給基類變數,這叫做賦值相容性。看下面這個例子 相容性示意圖如上。但是當我們新增泛型機制時 class animal class dog animal delegate t factory class program static...

逆變與協變

一 遇到問題 這是基於.net3.5開發,實際工作中遇到乙個問題。假設我們有乙個 base 類,乙個 derived 類,derived 繼承了 base。如下 classbase classderived base 當我用ienumerable作為形參,list作為實參時,發現編譯出錯了!原本父類...

康拓展開與逆展開

題目鏈結 別人關於康托展開與逆展開的部落格 康拓展開是對乙個自然排列到乙個自然數的對映,它們是一一對應的。include include include include include using namespace std struct zp w int hash 9 int flag 40001...