2021年6月5日 星期六

pinv指令

 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)),讀者可參考手冊之說明,以瞭解其使用方法。

沒有留言:

張貼留言

Messaging API作為替代方案

  LINE超好用功能要沒了!LINE Notify明年3月底終止服務,有什麼替代方案? LINE Notify將於2025年3月31日結束服務,官方建議改用Messaging API作為替代方案。 //CHANNEL_ACCESS_TOKEN = 'Messaging ...