Wednesday, April 11, 2012

Matrix Operations in java


MATRIX Class:



package matrix;
import java.util.Scanner;

public class Matrix {
        private int ROWS;
        private int COLOUM;
        private int totalMatrix;
        public double mat[][][];
        Scanner input = new Scanner(System.in);
        public Matrix(int rows,int coloum,int matNo){
                ROWS = rows;
                COLOUM = coloum;
                totalMatrix = matNo;
                mat = new double[totalMatrix+1][ROWS][COLOUM];
        }
        public void add(int oprnd1,int oprnd2){
                for(int i = 0;i<ROWS;i++)
                        for(int j=0 ; j<COLOUM;j++)
                                mat[totalMatrix][i][j] = mat[oprnd1-1][i][j] + mat[oprnd2-1][i][j];
        }
        public void subtract(int oprnd1,int oprnd2){
                for(int i = 0;i<ROWS;i++)
                        for(int j=0 ; j<COLOUM;j++)
                                mat[totalMatrix][i][j] = mat[oprnd1-1][i][j] - mat[oprnd2-1][i][j];
        }
        public void multiplication(int oprnd1,int oprnd2){
                if(ROWS == COLOUM)
                for(int i = 0;i<ROWS;i++)
                        for(int j=0 ; j<COLOUM;j++)
                                for(int k = 0;k<ROWS;k++ )
                                        mat[totalMatrix][i][j] += (mat[oprnd1-1][i][k]*mat[oprnd2-1][k][j]);
        }
        public void transpose(int matNo){
                double matRes[][] = new double[ROWS][COLOUM];
                for(int j = 0;j<ROWS;j++)
                        for(int i=0 ; i<COLOUM ; i++)
                                matRes[i][j]=mat[matNo-1][i][j];
                for(int j = 0;j<ROWS;j++)
                        for(int i=0 ; i<COLOUM ; i++)
                                mat[matNo-1][i][j]=matRes[j][i];
        }
        public void setMat(int matNo){
                for(int i = 0;i<ROWS;i++)
                        for(int j=0 ; j<COLOUM;j++)
                        {
                                System.out.printf("Enter number for Matrix %d [%d][%d] : ",matNo,i+1,j+1);
                                mat[matNo-1][i][j] = input.nextDouble();
                        }
        }
        public void display(int matNo){
                for(int i = 0;i<ROWS;i++)
                {
                        for(int j=0 ; j<COLOUM;j++)
                                System.out.print(mat[matNo-1][i][j]+"\t");
                        System.out.println();
                }
        }
}


MATRIX Test Class:

package matrix;
import java.util.Scanner;

public class MatrixTest {

        public static void main(String[] args) {
                Scanner input = new Scanner(System.in);
                System.out.print("Enter [Rows][Coloum] : ");
                int rows = input.nextInt();
                int coloum = input.nextInt();
                System.out.print("Enter count of MATRICES to create : ");
                int matCount = input.nextInt();
                Matrix matrix = new Matrix(rows,coloum,matCount);
                while(true)
                {
                        System.out.print("1. Setting Matrices\n"
                                +"2. Operations\n"
                                +"3. Display\n"
                                +"4. Exit\n"
                                +"Enter your Choice : ");
                        switch (input.nextInt())
                        {
                                case 1:
                                        System.out.print("Enter Matrix number to set : ");
                                        int matNo = input.nextInt();
                                        matrix.setMat(matNo);
                                        break;
                                case 2:
                                        System.out.print("1. Addition\n"
                                                +"2. Subtraction\n"
                                                +"3. Multiplication\n"
                                                +"4. Transpose\n"
                                                +"Enter operation : ");
                                                int choice = input.nextInt();
                                               
                                                System.out.print("Enter matrices"
                                                        + " for operation : ");
                                                int mat1 = input.nextInt();
                                                int mat2 = input.nextInt();
                                        switch (choice)
                                        {
                                                case 1:
                                                        matrix.add(mat1, mat2);
                                                        matrix.display(matCount+1);
                                                        break;
                                                case 2:
                                                        matrix.subtract(mat1, mat2);
                                                        matrix.display(matCount+1);
                                                        break;
                                                case 3:
                                                        matrix.multiplication(mat1, mat2);
                                                        matrix.display(matCount+1);
                                                        break;
                                                case 4:
                                                        matrix.transpose(mat1);
                                                        matrix.display(mat1);
                                                        break;
                                        }  
                                        break;
                                case 3:
                                        System.out.print("Enter Matrix number to display : ");
                                        matrix.display(input.nextInt());
                                        break;
                                case 4:
                                        System.exit(0);
                        }
                }
        }
}


follow for appreciation.

No comments:

Post a Comment