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:
Control the Session with Spring Security
Checked and Unchecked Exceptions in Java
Remove All Occurrences of a Specific Value from a List
Comparing Dates in Java
The Basics of Java Security
Add Multiple Items to an Java ArrayList
Java Program to Check for balanced parenthesis by using Stacks
A Comparison Between Spring and Spring Boot
Java Streams vs Vavr Streams
Java Program to Implement Gaussian Elimination Algorithm
Abstract class và Interface trong Java
Remove the First Element from a List
Handling Errors in Spring WebFlux
Spring Boot - Logging
Hashtable trong java
Cơ chế Upcasting và Downcasting trong java
Hướng dẫn Java Design Pattern – MVC
Java Program to Implement CopyOnWriteArraySet API
Semaphore trong Java
Quick Guide to Spring MVC with Velocity
Guide to Dynamic Tests in Junit 5
Java Program to Find a Good Feedback Edge Set in a Graph
New Stream Collectors in Java 9
Java Program to Perform Search in a BST
The Spring @Controller and @RestController Annotations
Calling Stored Procedures from Spring Data JPA Repositories
Java Program to Print only Odd Numbered Levels of a Tree
Java Multi-line String
Java Program to Compute Determinant of a Matrix
Spring Security OAuth2 – Simple Token Revocation
HttpAsyncClient Tutorial
Spring Cloud – Adding Angular