- 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
PyTorch – torch.linalg.solve() Method
To solve a square system of linear equations with unique solution, we could apply the torch.linalg.solve() method. This method takes two parameters −
first, the coefficient matrix A, and
second, the right-hand tensor b.
Where A is a square matrix and b is a vector. The solution is unique if A invertible. We can solve a number of systems of linear equations. In this case, A is a batch of square matrices and b is a batch of vectors.
Syntax
torch.linalg.solve(A, b)
Parameters
A – Square matrix or batch of square matrices. It is the coefficient matrix of system of linear equations.
b – Vector or a batch of vectors. It's the right-hand tensor of the linear system.
It returns a tensor of the solution of the system of linear equations.
Note − This method assumes that the coefficient matrix A is invertible. If it is not invertible, a Runtime Error will be raised.
Steps
We could use the following steps to solve a square system of linear equations.
Import the required library. In all the following examples, the required Python library is torch. Make sure you have already installed it.
import torch
Define a Coefficient matrix and the right-hand side tensor for the given square system of linear equations.
A = torch.tensor([[2., 3.],[1., -2.]]) b = torch.tensor([3., 0.])
Compute the unique solution using torch.linalg.solve(A,b). Coefficient matrix A must be invertible.
X = torch.linalg.solve(A, b)
Display the solution.
print("Solution:
", X)
Check if the calculated solution is correct or not.
print(torch.allclose(A @ X, b)) # True for correct solution
Example 1
Take a look at the following example −
# import required library import torch ''' Let's suppose our square system of linear equations is: 2x + 3y = 3 x - 2y = 0 ''' print("Linear equation:") print("2x + 3y = 3") print("x - 2y = 0") # define the coefficient matrix A A = torch.tensor([[2., 3.],[1., -2.]]) # define right hand side tensor b b = torch.tensor([3., 0.]) # Solve the linear equation X = torch.linalg.solve(A, b) # print the solution of above linear equation print("Solution:
", X) # check above solution to be true print(torch.allclose(A @ X, b))
Output
It will produce the following output −
Linear equation: 2x + 3y = 3 x - 2y = 0 Solution: tensor([0.8571, 0.4286]) True
Example 2
Let's take another example −
# import required library import torch # define the coefficient matrix A for a 3x3 # square system of linear equations A = torch.randn(3,3) # define right hand side tensor b b = torch.randn(3) # Solve the linear equation X = torch.linalg.solve(A, b) # print the solution of above linear equation print("Solution:
", X) # check above solution to be true print(torch.allclose(A @ X, b))
Output
It will produce the following output −
Solution: tensor([-0.2867, -0.9850, 0.9938]) True