This is a Java Program to Implement Gaussian Elimination Algorithm. Gaussian elimination (also known as row reduction) is an algorithm for solving systems of linear equations.
Here is the source code of the Java Program to Implement Gaussian Elimination Algorithm. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
/**
** Java Program to Implement Gaussian Elimination Algorithm
**/
import java.util.Scanner;
/** Class GaussianElimination **/
public class GaussianElimination
{
public void solve(double[][] A, double[] B)
{
int N = B.length;
for (int k = 0; k < N; k++)
{
/** find pivot row **/
int max = k;
for (int i = k + 1; i < N; i++)
if (Math.abs(A[i][k]) > Math.abs(A[max][k]))
max = i;
/** swap row in A matrix **/
double[] temp = A[k];
A[k] = A[max];
A[max] = temp;
/** swap corresponding values in constants matrix **/
double t = B[k];
B[k] = B[max];
B[max] = t;
/** pivot within A and B **/
for (int i = k + 1; i < N; i++)
{
double factor = A[i][k] / A[k][k];
B[i] -= factor * B[k];
for (int j = k; j < N; j++)
A[i][j] -= factor * A[k][j];
}
}
/** Print row echelon form **/
printRowEchelonForm(A, B);
/** back substitution **/
double[] solution = new double[N];
for (int i = N - 1; i >= 0; i--)
{
double sum = 0.0;
for (int j = i + 1; j < N; j++)
sum += A[i][j] * solution[j];
solution[i] = (B[i] - sum) / A[i][i];
}
/** Print solution **/
printSolution(solution);
}
/** function to print in row echleon form **/
public void printRowEchelonForm(double[][] A, double[] B)
{
int N = B.length;
System.out.println("\nRow Echelon form : ");
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
System.out.printf("%.3f ", A[i][j]);
System.out.printf("| %.3f\n", B[i]);
}
System.out.println();
}
/** function to print solution **/
public void printSolution(double[] sol)
{
int N = sol.length;
System.out.println("\nSolution : ");
for (int i = 0; i < N; i++)
System.out.printf("%.3f ", sol[i]);
System.out.println();
}
/** Main function **/
public static void main (String[] args)
{
Scanner scan = new Scanner(System.in);
System.out.println("Gaussian Elimination Algorithm Test\n");
/** Make an object of GaussianElimination class **/
GaussianElimination ge = new GaussianElimination();
System.out.println("\nEnter number of variables");
int N = scan.nextInt();
double[] B = new double[N];
double[][] A = new double[N][N];
System.out.println("\nEnter "+ N +" equations coefficients ");
for (int i = 0; i < N; i++)
for (int j = 0; j < N; j++)
A[i][j] = scan.nextDouble();
System.out.println("\nEnter "+ N +" solutions");
for (int i = 0; i < N; i++)
B[i] = scan.nextDouble();
ge.solve(A,B);
}
}
Output:
Gaussian Elimination Algorithm Test Enter number of variables 3 Enter 3 equations coefficients 2 1 -1 -3 -1 2 -2 1 2 Enter 3 solutions 8 -11 -3 Row Echelon form : -3.000 -1.000 2.000 | -11.000 0.000 1.667 0.667 | 4.333 0.000 0.000 0.200 | -0.200 Solution : 2.000 3.000 -1.000
Related posts:
Logging in Spring Boot
Consumer trong Java 8
Java Program to Find the Minimum Element of a Rotated Sorted Array using Binary Search approach
Java Program to Implement the Schonhage-Strassen Algorithm for Multiplication of Two Numbers
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
Java Program to Implement Network Flow Problem
Java Program to Test Using DFS Whether a Directed Graph is Weakly Connected or Not
Form Validation with AngularJS and Spring MVC
Introduction to Spring Cloud CLI
The Guide to RestTemplate
Java Program to Implement Attribute API
Spring @RequestMapping New Shortcut Annotations
Guide to Spring 5 WebFlux
Serialize Only Fields that meet a Custom Criteria with Jackson
How to Iterate Over a Stream With Indices
Spring Boot - Tomcat Port Number
Introduction to the Functional Web Framework in Spring 5
Hướng dẫn Java Design Pattern – Visitor
Spring Security Remember Me
Spring – Injecting Collections
Spring MVC and the @ModelAttribute Annotation
Java Program to Implement Ternary Search Tree
Java Program to Implement the Hungarian Algorithm for Bipartite Matching
A Guide to Spring Cloud Netflix – Hystrix
Wrapper Classes in Java
ETags for REST with Spring
Setting Up Swagger 2 with a Spring REST API
Jackson JSON Views
Hướng dẫn sử dụng Java Generics
A Guide to ConcurrentMap
Intro to Spring Boot Starters
Mapping a Dynamic JSON Object with Jackson