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:
Sử dụng Fork/Join Framework với ForkJoinPool trong Java
Java Program to Perform Arithmetic Operations on Numbers of Size
Adding a Newline Character to a String in Java
Lập trình đa luồng với CompletableFuture trong Java 8
Java Program to Implement EnumMap API
Java Program to Implement Jarvis Algorithm
The Guide to RestTemplate
Spring Boot Security Auto-Configuration
Redirect to Different Pages after Login with Spring Security
Mapping a Dynamic JSON Object with Jackson
Marker Interface trong Java
Functional Interface trong Java 8
Spring Boot: Customize Whitelabel Error Page
Spring @RequestMapping New Shortcut Annotations
Java Program to Implement Quick sort
Java Program to Implement Branch and Bound Method to Perform a Combinatorial Search
What is Thread-Safety and How to Achieve it?
Java Program to Perform Polygon Containment Test
Spring Webflux and CORS
Các nguyên lý thiết kế hướng đối tượng – SOLID
Request a Delivery / Read Receipt in Javamail
Java Program to Implement Expression Tree
The Java 8 Stream API Tutorial
Mix plain text and HTML content in a mail
Spring Cloud AWS – S3
The Thread.join() Method in Java
Java Program to Implement Hash Tables with Linear Probing
Java Program to Implement PrinterStateReasons API
Java Program to Implement Solovay Strassen Primality Test Algorithm
Java Program to Implement TreeSet API
Spring WebClient Requests with Parameters
Java Program to Generate All Possible Subsets with Exactly k Elements in Each Subset