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' 函数。