Advertisement
Narzew

LUDecomposition

Jan 11th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.81 KB | None | 0 0
  1. package ludecompose;
  2.  
  3. import java.util.Scanner;
  4.  
  5. /**
  6.  *
  7.  * @author Nikodem
  8.  */
  9. public class LUDecompose {
  10.  
  11.    public static void main(String[] args) {
  12.        
  13.         //======================================
  14.         // ** Define variables
  15.         //======================================
  16.        
  17.         double[][] A;
  18.        
  19.         //======================================
  20.         // ** Get data from user
  21.         //======================================
  22.        
  23.         System.out.println("Enter matrix dimension: ");
  24.         Scanner sc = new Scanner(System.in);
  25.         int n = sc.nextInt();
  26.         // Initialize vars
  27.         A = new double[n][n];
  28.        
  29.         System.out.println("Enter left-side matrix: ");
  30.         for(int i=0; i<n; i++)
  31.             for(int j=0; j<n; j++)
  32.                 A[i][j] = sc.nextDouble();
  33.         //=============================================
  34.         // ** Create l and u matrices
  35.         //=============================================
  36.         double [][]l = new double[n][n];
  37.         double [][]u = new double[n][n];
  38.         //=============================================
  39.         // ** Calculate for n = 2
  40.         //=============================================
  41.         if(n==2){
  42.             l[0][0] = l[1][1] = 1;
  43.             l[0][1] = 0;
  44.             u[1][0] = 0;
  45.             u[0][0] = A[0][0];
  46.             u[0][1] = A[0][1];
  47.             l[1][0] = A[1][0]/A[0][0];
  48.             u[1][1] = A[1][1] - (l[1][0]*u[0][1]);
  49.         //=============================================
  50.         // ** Calculate for n = 3
  51.         //=============================================
  52.         } else if(n==3){
  53.             l[0][0] = l[1][1] = l[2][2] = 1;
  54.             l[0][1] = l[0][2] = l[1][2] = 0;
  55.             u[1][0] = u[2][0] = u[2][1] = 0;
  56.             u[0][0] = A[0][0];
  57.             u[0][1] = A[0][1];
  58.             u[0][2] = A[0][2];
  59.             l[1][0] = A[1][0]/A[0][0];
  60.             u[1][1] = A[1][1] - (l[1][0]*u[0][1]);
  61.             u[1][2] = A[1][2] - (l[1][0]*u[0][2]);
  62.             l[2][0] = A[2][0]/u[0][0];
  63.             l[2][1] = (A[2][1] - l[2][1]*u[0][1])/u[1][1];
  64.             u[2][2] = A[2][2] - (l[2][0]*u[0][2]) - (l[2][1]*u[1][2]);
  65.         } else {
  66.             System.out.println("Only 2 and 3 dimensional matrices are supported");
  67.         }
  68.         System.out.println("L matrix: ");
  69.             for(int i=0; i<n; i++){
  70.                 for(int j=0; j<n; j++){
  71.                     System.out.print(" "+l[i][j]);
  72.                 }
  73.                 System.out.println();
  74.             }
  75.             System.out.println("U matrix: ");
  76.             for(int i=0; i<n; i++){
  77.                 for(int j=0; j<n; j++){
  78.                     System.out.print(" "+u[i][j]);
  79.                 }
  80.                 System.out.println();
  81.             }
  82.         sc.close();
  83.     }
  84.    
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement