- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
Physics
Chemistry
Biology
Mathematics
English
Economics
Psychology
Social Studies
Fashion Studies
Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Difference between inv() and pinv() functions in MATLAB
In this tutorial, we will discuss two important functions namely, "inv()" and "pinv()", used for matrix inversion in MATLAB. Since, the fundamental purpose of both the functions is the same, i.e. matrix inversion, but they are different from each other in many aspects. Hence, we will learn the important differences between 'inv()' and 'pinv()' functions.
What is 'inv()' Function?
In MATLAB, the 'inv()' function is a built-in function used to calculate the inverse of a non-singular square matrix.
Therefore, if 'M' is a non-singular square matrix, then the function 'inv(M)' will return a new matrix 'B' for which 'I = M * B'. Where, 'I' is called the identity matrix.
It is important to note that the 'inv()' function cannot be used to find the inverse of a singular or non-invertible matrix. If we apply the 'inv()' function to a singular matrix, then it will produce an inaccurate result. In short, the 'inv()' function is developed to handle non-singular matrices only.
Example
The following example demonstrates the use of the 'inv()' function to calculate the inverse of a square matrix −
% 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);
Output
Orignal Matrix is: 1 2 3 4 Inverted Matrix is: -2.0000 1.0000 1.5000 -0.5000
Example 2
Now, let us get another example to understand the operation of the 'inv' function for a singular matrix.
% 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);
Output
Orignal Matrix is: 1 2 3 6 Inverted Matrix is: Inf Inf Inf Inf
Hence, it is clear that the 'inv()' function cannot be used to find the inverse of a singular matrix.
What is 'pinv()' Function?
In MATLAB, the 'pinv()' function is used to find the pseudo-inverse of a given matrix. The upside of this function is that it can be applied to both square and non-square matrices. The 'pinv()' function uses the floating-point arithmetic to compute the inverse of a given matrix.
The major advantage of the 'pinv()' function is that it can be used to calculate the inverse of both singular and non-singular matrices.
Example 3
The following MATLAB program demonstrates the use of 'pinv()' function to calculate the inverse of a singular matrix and a non-singular matrix.
% 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);
Output
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
Hence, it is clear that we can use the 'pinv' function to compute the inverse of a singular as well as non-singular matrix.
Now, after getting an overview of the 'inv()' function and the 'pinv()' function. Let us now discuss the important differences between them.
Differences Between inv() and Pinv() Functions
The following table highlights all the major differences between 'inv()' and 'pinv()' functions in MATLAB −
Parameter |
inv() Function |
pinv() Function |
---|---|---|
Purpose |
The 'inv()' function is used to find the inverse of a non-singular square matrix. |
The 'pinv()' function is used to find the inverse of a singular as well as non-singular matrix. |
Type of matrix |
The 'inv()' function can be used to calculate the inverse of a square matrix only. |
The 'pinv()' function can be used to calculate the inverse of any type of matrix. |
Result |
The 'inv()' function returns the exact inverse of a matrix. |
The 'pinv()' function returns the Moore-Penrose Pseudo Inverse of a matrix. |
Execution speed |
The 'inv()' function executes at faster speed. |
The 'pinv()' function starts at slower speed. |
Floating point arithmetic |
The 'inv()' function does not use the floating point arithmetic. |
The 'pinv()' function uses the floating point arithmetic. |
Return value for singular matrices |
When the given matrix is a singular matrix, then the 'inv' function returns errors. |
When the given matrix is a singular matrix, the 'pinv' function returns a pseudo inverse of the matrix. |
Efficiency |
The 'inv()' function can be less efficient for large matrices. |
The 'pinv' function is more efficient than the 'inv()' function. |
Numerical stability |
The 'inv' function can produce numerical instability for non-invertible matrices. |
The 'pinv' function is more stable for non-invertible matrices. |
Suitability |
The 'inv' function is suitable to solve systems of linear equations with square matrices. |
The 'pinv' function is suitable for solving underdetermined and overdetermined systems. |
Conclusion
Both these MATLAB functions are used to calculate the inverse of a given matrix. The important difference between 'inv' and 'pinv' functions is that the 'inv' function can be used to calculate the inverse of a non-singular square matrix, while the 'pinv' function can be used to calculate the inverse of any type of matrix, including the singular matrices. Another important point to note about the 'inv' and 'pinv' functions is that the 'inv' function returns the true inverse of the given matrix, whereas the 'pinv' function returns the pseudo inverse of the given matrix.
In the above sections of this tutorial, we have explained the 'inv' and 'pinv' functions with the help of example MATLAB programs for both singular and non-singular matrices.