95 lines
3.4 KiB
Java
95 lines
3.4 KiB
Java
|
/*
|
||
|
This is a java program to LU Decomposition of a given matrix. LU decomposition is the process of
|
||
|
reducing single matrix into 2 matrices such that, upon multiplication we get the original matrix,
|
||
|
having property that one of them is lower trinagular matrix and other one is upper trinagular matrix.
|
||
|
*/
|
||
|
|
||
|
//This is a sample program to calulate the LU decomposition of the given matrix
|
||
|
import java.util.Scanner;
|
||
|
|
||
|
public class LUDecomposition
|
||
|
{
|
||
|
public static void main(String args[])
|
||
|
{
|
||
|
System.out.println("Enter the dimension of the matrix:");
|
||
|
Scanner sc = new Scanner(System.in);
|
||
|
int n = sc.nextInt();
|
||
|
double [][]mat = new double[n][n];
|
||
|
for(int i=0; i<n; i++)
|
||
|
for(int j=0; j<n; j++)
|
||
|
mat[i][j] = sc.nextDouble();
|
||
|
if(n==2)
|
||
|
{
|
||
|
double [][]l = new double[n][n];
|
||
|
l[0][0] = l[1][1] = 1;
|
||
|
l[0][1] = 0;
|
||
|
double [][]u = new double[n][n];
|
||
|
u[1][0] = 0;
|
||
|
u[0][0] = mat[0][0];
|
||
|
u[0][1] = mat[0][1];
|
||
|
l[1][0] = mat[1][0]/mat[0][0];
|
||
|
u[1][1] = mat[1][1] - (l[1][0]*u[0][1]); //mat[2][2]-(mat[2][1]*mat[1][2]/mat[1][1]);
|
||
|
System.out.println("The L Component is:");
|
||
|
for(int i=0; i<n; i++)
|
||
|
{
|
||
|
for(int j=0; j<n; j++)
|
||
|
System.out.print(" "+l[i][j]);
|
||
|
System.out.println();
|
||
|
}
|
||
|
System.out.println("The U Component is:");
|
||
|
for(int i=0; i<n; i++)
|
||
|
{
|
||
|
for(int j=0; j<n; j++)
|
||
|
System.out.print(" "+u[i][j]);
|
||
|
System.out.println();
|
||
|
}
|
||
|
}
|
||
|
if(n==3)
|
||
|
{
|
||
|
double [][]l = new double[n][n];
|
||
|
l[0][0] = l[1][1] = l[2][2] = 1;
|
||
|
l[0][1] = l[0][2] = l[1][2] = 0;
|
||
|
double [][]u = new double[n][n];
|
||
|
u[1][0] = u[2][0] = u[2][1] = 0;
|
||
|
u[0][0] = mat[0][0];
|
||
|
u[0][1] = mat[0][1];
|
||
|
u[0][2] = mat[0][2];
|
||
|
l[1][0] = mat[1][0]/mat[0][0];
|
||
|
u[1][1] = mat[1][1] - (l[1][0]*u[0][1]); //mat[2][2]-(mat[2][1]*mat[1][2]/mat[1][1]);
|
||
|
u[1][2] = mat[1][2] - (l[1][0]*u[0][2]);
|
||
|
l[2][0] = mat[2][0]/u[0][0];
|
||
|
l[2][1] = (mat[2][1] - l[2][1]*u[0][1])/u[1][1];
|
||
|
u[2][2] = mat[2][2] - (l[2][0]*u[0][2]) - (l[2][1]*u[1][2]);
|
||
|
System.out.println("The L Component is:");
|
||
|
for(int i=0; i<n; i++)
|
||
|
{
|
||
|
for(int j=0; j<n; j++)
|
||
|
System.out.print(" "+l[i][j]);
|
||
|
System.out.println();
|
||
|
}
|
||
|
System.out.println("The U Component is:");
|
||
|
for(int i=0; i<n; i++)
|
||
|
{
|
||
|
for(int j=0; j<n; j++)
|
||
|
System.out.print(" "+u[i][j]);
|
||
|
System.out.println();
|
||
|
}
|
||
|
}
|
||
|
sc.close();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/*
|
||
|
Enter the dimension of the matrix:
|
||
|
3
|
||
|
2 3 1
|
||
|
4 5 1
|
||
|
1 1 1
|
||
|
The L Component is:
|
||
|
1.0 0.0 0.0
|
||
|
2.0 1.0 0.0
|
||
|
0.5 -1.0 1.0
|
||
|
The U Component is:
|
||
|
2.0 3.0 1.0
|
||
|
0.0 -1.0 -1.0
|
||
|
0.0 0.0 -0.5
|