Menu

Friday, 20 November 2015

Matrix Class (Java Concept)

package matrix;
import java.util.Scanner;

/**
    *
 * Adeniran Adetunji
 */
public class MatrixC {
   
    double [][]matrix;
   
    //Create Matrix of Row = x and Column=y
   
    MatrixC ()
    {
        matrix = new double[0][0];
    }
     double [][] createMatrix()
    {
        int x;
        int y;
        Scanner setMatrix = new Scanner (System.in);
        System.out.print("Enter Number of row(s)");
        x = setMatrix.nextInt();
        System.out.print("Enter Number of column(s)");
         y = setMatrix.nextInt();
        matrix = new double[x][y];
        initializeMatrix(matrix);
       
        return matrix;
       
      }
   
     double[][]createMatrix(double [][]matrix_1)
     {
         matrix = matrix_1;
         return matrix;
     }
   
     double[][] createColumnVector()
     {
        final int x= 1;
        int y;
      Scanner columnNo = new Scanner (System.in);
      System.out.print("Enter Number of Column(s): ");
      y = columnNo.nextInt();
     
      matrix=new double [x][y];
      initializeMatrix(matrix);
     
      return matrix;
     }
   
     double[][]createColumnVector(double[]cMatrix)
     {
       
         int y = cMatrix.length;
       
         matrix = new double [y][1];
       
         for (int i=0; i<matrix.length; i++)
         {
             for (int k=0; k<matrix[i].length; k++)
             {
                 matrix[i][k]=cMatrix[i];
               
             }
         }
       
         return matrix;
     }
   
     double [][] createRowVector()
     {
         final int y= 1;
        int x;
      Scanner columnNo = new Scanner (System.in);
      System.out.print("Enter Number of Row(s): ");
      x = columnNo.nextInt();
     
      matrix=new double [x][y];
      initializeMatrix(matrix);
     
      return matrix;
     }
   
     double [][]createRowVector(double[]rMatrix)
     {
        int y = rMatrix.length;
       
         matrix = new double [1][y];
       
         for (int i=0; i<matrix.length; i++)
         {
             for (int k=0; k<matrix[i].length; k++)
             {
                 matrix[i][k]=rMatrix[k];
               
             }
         }
       
         return matrix;
     }
   
     void initializeMatrix(double [][]matrix)
    {
        for (int i=0; i<matrix.length; i++)
        {
            for(int k=0; k<matrix[i].length; k++)
            {
                matrix[i][k]=0.0;
            }
        }
    }
     void displayMatrix(double[][]matrix1)
     {
         for(int i=0; i<matrix1.length; i++)
         {
             for(int k=0; k<matrix1[i].length; k++)
             {
                 System.out.printf("%-10.1f", matrix1[i][k]);
             }
             System.out.println("");
         }
       
     }
   
   
    //Initialize matrix of row i and column K with each element initialy equal to zero
   
   
    void enterMatrixElement(double[][]matrix)
    {
        for(int i=0; i<matrix.length; i++)
        {
            for(int k = 0; k<matrix[i].length; k++)
            {
                Scanner input_matrix_element = new Scanner (System.in);
                System.out.print("Enter element in "+ "row:"+" "+ (i+1)+" "+ "column :"+(k+1));
                System.out.print("==>");
                matrix[i][k]= input_matrix_element.nextInt();
            }
        }
    }
   
    boolean equalMatrix(double [][]matrix_1, double[][]matrix_2)
    {
       boolean test = false;
       
        if((matrix_1.length==matrix_2.length)
               &&(matrix_1[0].length==matrix_2[0].length))
        {
            for (int i = 0; i<matrix_1.length; i++)
            {
                for (int k = 0; k<matrix_1[i].length; i++)
                {
                    if(matrix_1[i][k]==matrix_2[i][k])
                    {
                        test = true;
                    }
                }
            }
        }
        else          
        {
            test =  false;
        }
        return test;
    }
   
   
    void clearMatrix (double[][]matrix)
    {
        initializeMatrix(matrix);
    }
   
    double [][] cloneMatrix(double[][]matrix)
    {
       return matrix;
    }
   
    double getElement(double[][]matrix, int x, int y)
    {
       double element = matrix[x][y];
     
       return element;
    }
   
    void  setElement( double[][]matrix, int x, int y, double z)
    {
       matrix[x][y]=z;
    }
   
    double [][]getColumn(double[][]matrix, int col_index)
    {
        int num = matrix.length;
       
        double [][] matrixR = new double[num][1];
       
        for (int i=0; i<matrix.length; i++)
        {
            matrixR[i][0]= matrix[i][col_index];
        }
       
        return matrixR;
    }
   
    boolean IsVector (double[][]matrix_c)
    {
        boolean result = false;
       
        if((matrix_c.length==1)||(matrix_c[0].length==1))
        {
            result = true;
        }
       
        return result;
       
    }
   
    boolean checkVectorEqualLength(double [][]matrix_A, double[][] matrix_B)
    {
   
        boolean result = false;
       
            if((matrix_A.length==matrix_B.length)&&(matrix_A[0].length==matrix_B[0].length))
            {
                result=true;
            }
            else if ((matrix_A.length==matrix_B[0].length)&&(matrix_A[0].length==matrix_B.length))
            {
                result = true;
            }
            else
            {
                result=false;
            }
         
         
       
        return result;
    }
   
    boolean equalDimension(double[][]matrix_A, double[][]matrix_B)
    {
        boolean check = false;
        if((matrix_A.length==matrix_B.length)&&(matrix_A[0].length==matrix_B[0].length))
        {
            check = true;
        }
       
        return check;
    }
   
    double dotProduct(double[][]matrix_A, double[][]matrix_B)
    {
        boolean check;
        boolean check2;
        double result=0;
       
        check = (IsVector(matrix_A)&&IsVector(matrix_B));
       check2 = ((check)&&(checkVectorEqualLength(matrix_A, matrix_B)));
        if(check2)
        {
             if((matrix_A.length==matrix_B.length)&&(matrix_A[0].length==matrix_B[0].length))
             {
                 for(int i=0; i<matrix_A.length; i++)
                 {
                     for(int k=0; k<matrix_A[i].length; k++)
                     {
                         result= result+(matrix_A[i][k]*matrix_B[i][k]);
                     }
                 }
             }
             if((matrix_A.length==matrix_B[0].length)&&(matrix_A[0].length==matrix_B.length))
             {
                 if(matrix_A.length==1)
                 {
                     for (int i=0; i<matrix_A.length; i++)
                     {
                         for (int k=0; k<matrix_B.length; k++)
                         {
                             result = result+(matrix_A[i][k]*matrix_B[k][i]);
                         }
                     }
                 }
                 if(matrix_B.length==1)
                     for(int i=0; i<matrix_B.length; i++)
                     {
                         for(int k=0; k<matrix_A.length; k++)
                         {
                             result = result+(matrix_B[i][k]*matrix_A[k][i]);
                         }
                     }
             }
               
        }
        else
        {
            System.out.println("Matrices are not compartible for dot product");
           
         
        }
       
        return result;
    }
   
   
    double [][] addMatrix (double[][] matrix_A, double [][]matrix_B)
    {
        double [][]result;
       
        result = new double[matrix_A.length][matrix_A[0].length];
        initializeMatrix(result);
           
        if(equalDimension(matrix_A, matrix_B))
        {
            result = new double[matrix_A.length][matrix_A[0].length];
            initializeMatrix(result);
            for(int i =0; i<matrix_A.length; i++)
            {
                for(int k=0; k<matrix_A[i].length; k++)
                {
                    result[i][k]=matrix_A[i][k]+matrix_B[i][k];
                }
               
            }
        }
        else
        {
            System.out.println("The matrices do not have the same dimesion");
        }
       
        return result;
       
    }
   

 
}