pinv指令
源自於https://bime-matlab.blogspot.com/2006/11/103-2.html
在多數解的例子中,有時並不是僅要將其中一變數設定為零之解。為使整個系統得到最佳化,亦可利用pinv指令求得最小模組之合理解。pinv(A)又稱為虛反矩陣(pseudoinverse),其功能與反矩陣之計算相同,但它會基於svd(A)函數(或稱奇異值分解函數)之計算方式,求得一個不是屬於全階之矩陣A之反矩陣。這是長方形矩陣求解時,在多重解中求其反矩陣之折衷方式。故若矩陣A為方矩陣或非零矩陣,則其結果應與inv(A)相同。只是在這樣的狀況,寧可使用inv(A)較為省事。處理這些長方矩陣或特異矩陣時,使用pinv(A)會有意想不到的效果。其解法是根據反矩陣法:
>> A=[3 2 1; 10 -25 5]
A =
3 2 1
10 -25 5
>> C=[5000 2000]'
C =
5000
2000
>> T=inv(A)*C
Error using inv
Matrix must be square.
>> T=pinv(A)*C
T =
1.0e+03 *
1.2039
0.4852
0.4180
上面之例因為A不是方形矩陣,故求其反矩陣時會有錯誤的信息,但若用虛反矩陣指令pinv,反而相安無事,這是將T1、T2以其餘一變數T3表示之情況下,求得其最小平方之組合。其結果是否合用則端視問題之限制與應用而定。 PINV(A,TOL) 之指令後面另有參數TOL,可以輸入容許值。其預設值為MAX(SIZE(A)) * NORM(A) * EPS(class(A)),讀者可參考手冊之說明,以瞭解其使用方法。
沒有留言:
張貼留言