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’函数,分别针对奇异和非奇异矩阵。