This is the java program to find the inverse of square invertible matrix. The matrix is invertible if its determinant is non zero.
Here is the source code of the Java Program to Find Inverse of a Matrix. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is sample program to find the inverse of a matrix
import java.util.Scanner;
public class Inverse
{
public static void main(String argv[])
{
Scanner input = new Scanner(System.in);
System.out.println("Enter the dimension of square matrix: ");
int n = input.nextInt();
double a[][]= new double[n][n];
System.out.println("Enter the elements of matrix: ");
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
a[i][j] = input.nextDouble();
double d[][] = invert(a);
System.out.println("The inverse is: ");
for (int i=0; i<n; ++i)
{
for (int j=0; j<n; ++j)
{
System.out.print(d[i][j]+" ");
}
System.out.println();
}
input.close();
}
public static double[][] invert(double a[][])
{
int n = a.length;
double x[][] = new double[n][n];
double b[][] = new double[n][n];
int index[] = new int[n];
for (int i=0; i<n; ++i)
b[i][i] = 1;
// Transform the matrix into an upper triangle
gaussian(a, index);
// Update the matrix b[i][j] with the ratios stored
for (int i=0; i<n-1; ++i)
for (int j=i+1; j<n; ++j)
for (int k=0; k<n; ++k)
b[index[j]][k]
-= a[index[j]][i]*b[index[i]][k];
// Perform backward substitutions
for (int i=0; i<n; ++i)
{
x[n-1][i] = b[index[n-1]][i]/a[index[n-1]][n-1];
for (int j=n-2; j>=0; --j)
{
x[j][i] = b[index[j]][i];
for (int k=j+1; k<n; ++k)
{
x[j][i] -= a[index[j]][k]*x[k][i];
}
x[j][i] /= a[index[j]][j];
}
}
return x;
}
// Method to carry out the partial-pivoting Gaussian
// elimination. Here index[] stores pivoting order.
public static void gaussian(double a[][], int index[])
{
int n = index.length;
double c[] = new double[n];
// Initialize the index
for (int i=0; i<n; ++i)
index[i] = i;
// Find the rescaling factors, one from each row
for (int i=0; i<n; ++i)
{
double c1 = 0;
for (int j=0; j<n; ++j)
{
double c0 = Math.abs(a[i][j]);
if (c0 > c1) c1 = c0;
}
c[i] = c1;
}
// Search the pivoting element from each column
int k = 0;
for (int j=0; j<n-1; ++j)
{
double pi1 = 0;
for (int i=j; i<n; ++i)
{
double pi0 = Math.abs(a[index[i]][j]);
pi0 /= c[index[i]];
if (pi0 > pi1)
{
pi1 = pi0;
k = i;
}
}
// Interchange rows according to the pivoting order
int itmp = index[j];
index[j] = index[k];
index[k] = itmp;
for (int i=j+1; i<n; ++i)
{
double pj = a[index[i]][j]/a[index[j]][j];
// Record pivoting ratios below the diagonal
a[index[i]][j] = pj;
// Modify other elements accordingly
for (int l=j+1; l<n; ++l)
a[index[i]][l] -= pj*a[index[j]][l];
}
}
}
}
Output:
$ javac Inverse.java $ java Inverse Enter the dimension of square matrix: 2 Enter the elements of matrix: 1 2 3 4 The Inverse is: -1.9999999999999998 1.0 1.4999999999999998 -0.49999999999999994
Related posts:
OAuth2 for a Spring REST API – Handle the Refresh Token in Angular
Guide to Selenium with JUnit / TestNG
Java Program to Implement the Vigenere Cypher
Java Program to Find MST (Minimum Spanning Tree) using Kruskal’s Algorithm
Java Program to Find Shortest Path Between All Vertices Using Floyd-Warshall’s Algorithm
Java Program to Solve any Linear Equation in One Variable
Spring Boot - Building RESTful Web Services
Template Engines for Spring
Spring Cloud – Bootstrapping
Java Program to Implement Quick Sort Using Randomization
Lập trình đa luồng trong Java (Java Multi-threading)
Generic Constructors in Java
New Features in Java 15
Java Program to Implement CountMinSketch
Java NIO2 Path API
Spring Boot - Rest Template
Java Program to Implement Bellman-Ford Algorithm
Spring Boot - Cloud Configuration Server
Rate Limiting in Spring Cloud Netflix Zuul
Hướng dẫn Java Design Pattern – Prototype
Guide to the Fork/Join Framework in Java
Java Program to Implement Multi-Threaded Version of Binary Search Tree
Spring Security Logout
Java Program to Implement Caesar Cypher
Jackson Date
Java Program to implement Bit Set
@Order in Spring
The SpringJUnitConfig and SpringJUnitWebConfig Annotations in Spring 5
Vấn đề Nhà sản xuất (Producer) – Người tiêu dùng (Consumer) và đồng bộ hóa các luồng trong Java
Java Perform to a 2D FFT Inplace Given a Complex 2D Array
Intro to the Jackson ObjectMapper
Spring WebClient Requests with Parameters