MATLAB 中 inv() 和 pinv() 函式的區別


在本教程中,我們將討論兩個重要的函式,即“inv()”和“pinv()”,它們用於 MATLAB 中的矩陣求逆。由於這兩個函式的基本目的是相同的,即矩陣求逆,但它們在許多方面又有所不同。因此,我們將學習 'inv()' 和 'pinv()' 函式之間的重要區別。

什麼是 'inv()' 函式?

在 MATLAB 中,'inv()' 函式是一個內建函式,用於計算非奇異方陣的逆矩陣。

因此,如果 'M' 是一個非奇異方陣,則函式 'inv(M)' 將返回一個新矩陣 'B',其中 'I = M * B'。其中,'I' 稱為單位矩陣。

需要注意的是,'inv()' 函式不能用於求奇異矩陣或不可逆矩陣的逆矩陣。如果我們將 'inv()' 函式應用於奇異矩陣,則會產生不準確的結果。簡而言之,'inv()' 函式僅用於處理非奇異矩陣。

示例

以下示例演示瞭如何使用 'inv()' 函式計算方陣的逆矩陣:

% MATLAB code to find inverse of a non-singular square matrix
% Create a non-singular square matrix
M = [1, 2; 3, 4];

% Find the inverse using inv() function
B = inv(M);

% Display the original matrix and inverted matrix
disp('Orignal Matrix is: ');
disp(M);
disp('Inverted Matrix is: ');
disp(B);

輸出

Orignal Matrix is: 
     1     2
     3     4

Inverted Matrix is: 
   -2.0000    1.0000
    1.5000   -0.5000

示例 2

現在,讓我們看另一個示例,以瞭解 'inv' 函式對奇異矩陣的操作。

% MATLAB code to find inverse of a singular square matrix
% Create a singular square matrix
M = [1, 2; 3, 6];

% Find the inverse using inv() function
B = inv(M);

% Display the original matrix and inverted matrix
disp('Orignal Matrix is: ');
disp(M);
disp('Inverted Matrix is: ');
disp(B);

輸出

Orignal Matrix is: 
     1     2
     3     6

Inverted Matrix is: 
   Inf   Inf
   Inf   Inf

因此,很明顯,'inv()' 函式不能用於求奇異矩陣的逆矩陣。

什麼是 'pinv()' 函式?

在 MATLAB 中,'pinv()' 函式用於求給定矩陣的偽逆矩陣。此函式的優點是可以應用於方陣和非方陣。'pinv()' 函式使用浮點運算來計算給定矩陣的逆矩陣。

'pinv()' 函式的主要優點是可以用於計算奇異矩陣和非奇異矩陣的逆矩陣。

示例 3

以下 MATLAB 程式演示瞭如何使用 'pinv()' 函式計算奇異矩陣和非奇異矩陣的逆矩陣。

% MATLAB code to find inverse of a non-singular square matrix
% Create a non-singular matrix
M1 = [1, 2, 3; 3, 4, 6];

% Create a singular matrix
M2 = [1, 2; 3, 6];

% Find the inverse of M1 and M2 using pinv() function
B1 = pinv(M1);
B2 = pinv(M2);

% Display the original matrices and inverted matrices
disp('Orignal Matrix M1 is: ');
disp(M1);
disp('Inverted Matrix B1 is: ');
disp(B1);
disp('Orignal Matrix M2 is: ');
disp(M2);
disp('Inverted Matrix B2 is: ');
disp(B2);

輸出

Orignal Matrix M1 is: 
     1     2     3
     3     4     6

Inverted Matrix B1 is: 
   -2.0000    1.0000
    0.4615   -0.1538
    0.6923   -0.2308

Orignal Matrix M2 is: 
     1     2
     3     6

Inverted Matrix B2 is: 
    0.0200    0.0600
    0.0400    0.1200

因此,很明顯,我們可以使用 'pinv' 函式計算奇異矩陣和非奇異矩陣的逆矩陣。

現在,在概述了 'inv()' 函式和 'pinv()' 函式之後。讓我們現在討論它們之間重要的區別。

inv() 和 Pinv() 函式之間的區別

下表突出顯示了 MATLAB 中 'inv()' 和 'pinv()' 函式之間所有主要區別:

引數

inv() 函式

pinv() 函式

用途

'inv()' 函式用於求非奇異方陣的逆矩陣。

'pinv()' 函式用於求奇異矩陣和非奇異矩陣的逆矩陣。

矩陣型別

'inv()' 函式只能用於計算方陣的逆矩陣。

'pinv()' 函式可用於計算任何型別矩陣的逆矩陣。

結果

'inv()' 函式返回矩陣的精確逆矩陣。

'pinv()' 函式返回矩陣的 Moore-Penrose 偽逆矩陣。

執行速度

'inv()' 函式執行速度更快。

'pinv()' 函式執行速度較慢。

浮點運算

'inv()' 函式不使用浮點運算。

'pinv()' 函式使用浮點運算。

奇異矩陣的返回值

當給定矩陣為奇異矩陣時,'inv' 函式會返回錯誤。

當給定矩陣為奇異矩陣時,'pinv' 函式會返回矩陣的偽逆矩陣。

效率

'inv()' 函式對於大型矩陣可能效率較低。

'pinv' 函式比 'inv()' 函式效率更高。

數值穩定性

'inv' 函式對於不可逆矩陣可能產生數值不穩定性。

'pinv' 函式對於不可逆矩陣更加穩定。

適用性

'inv' 函式適用於求解具有方陣的線性方程組。

'pinv' 函式適用於求解欠定和超定系統。

結論

這兩個 MATLAB 函式都用於計算給定矩陣的逆矩陣。'inv' 和 'pinv' 函式之間的重要區別在於,'inv' 函式可用於計算非奇異方陣的逆矩陣,而 'pinv' 函式可用於計算任何型別矩陣(包括奇異矩陣)的逆矩陣。關於 'inv' 和 'pinv' 函式,另一個需要注意的重要事項是,'inv' 函式返回給定矩陣的真逆矩陣,而 'pinv' 函式返回給定矩陣的偽逆矩陣。

在本教程的上述部分中,我們藉助奇異矩陣和非奇異矩陣的示例 MATLAB 程式解釋了 'inv' 和 'pinv' 函式。

更新時間: 2023年9月6日

330 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.