MATLAB inv()和pinv()区别是什么

inv()和pinv()在MATLAB中的区别是什么

在本教程中,我们将讨论两个重要的函数,即”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()’ 函数返回矩阵的摩尔-彭洛斯伪逆矩阵。
执行速度 ‘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’函数,分别针对奇异和非奇异矩阵。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程