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 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告