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' 函式。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP