Advertisement
Yesver08

Matriks.java

Mar 8th, 2021
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.43 KB | None | 0 0
  1. public class Matrix {
  2.     private int mat[][], x, y;
  3.    
  4.     Matrix() {
  5.     mat = new int[0][0];
  6.     x = 0;
  7.     y = 0;
  8.     }
  9.    
  10.     Matrix(int x) {
  11.     mat = new int[x][x];
  12.     for (int i = 0; i < x; i++) mat[i][i] = 1;
  13.     this.x = x;
  14.     y = x;
  15.     }
  16.    
  17.     Matrix(int x, int y) {
  18.     mat = new int[y][x];
  19.     this.x = x;
  20.     this.y = y;
  21.     }
  22.    
  23.     void setElementAt(int x, int y, int data) {
  24.     mat[x][y] = data;
  25.     }
  26.    
  27.    
  28.     int getElementAt(int x, int y) {
  29.     return mat[x][y];
  30.     }
  31.    
  32.     int getRow() {
  33.     return x;
  34.     }
  35.    
  36.     int getColumn() {
  37.     return y;
  38.     }
  39.    
  40.     void print() {
  41.     for (int i = 0; i < y; i++) {
  42.         for (int j = 0; j < x; j++) {
  43.         System.out.print(mat[i][j] + " ");
  44.         }
  45.         System.out.println();
  46.     }
  47.     }
  48.    
  49.     int[][] toIntArray() {
  50.     return mat;
  51.     }
  52.    
  53.     void setSize(int m, int n) {
  54.     int[][] temp = new int[n][m];
  55.     for (int i = 0; i < Math.min(n, y); i++) System.arraycopy(mat[i], 0, temp[i], 0, Math.min(x, m));
  56.     mat = temp;
  57.     x = m;
  58.     y = n;
  59.     }
  60.    
  61.     void transpose() {
  62.     int matT[][] = new int[x][y];
  63.     for (int i = 0; i < y; i++) for (int j = 0; j < x; j++) matT[j][i] = mat[i][j];
  64.     mat = matT;
  65.     int temp = x;
  66.     x = y;
  67.     y = temp;
  68.     }
  69.    
  70.     void toIdentity(int x) {
  71.     mat = new int[x][x];
  72.     for (int i = 0; i < x; i++) mat[i][i] = 1;
  73.     this.x = x;
  74.     y = x;
  75.     }
  76.    
  77.     void add(Matrix m) {
  78.     for (int i = 0; i < y; i++) for (int j = 0; j < x; j++) {
  79.         try {
  80.         mat[i][j] += m.getElementAt(i, j);
  81.         }
  82.         catch (Exception e) {
  83.         throw new IllegalArgumentException("Matrices size mismatch");
  84.         }
  85.     }
  86.     }
  87.    
  88.     void add(Matrix m, Matrix n) {
  89.     Matrix temp = new Matrix(m.getRow(), m.getColumn());
  90.     for (int i = 0; i < y; i++) for (int j = 0; j < x; j++) {
  91.         try {
  92.         temp.setElementAt(i, j, m.getElementAt(i, j) + n.getElementAt(i, j));
  93.         }
  94.         catch (Exception e) {
  95.         throw new IllegalArgumentException("Matrices size mismatch");
  96.         }
  97.     }
  98.     mat = temp.toIntArray();
  99.     x = m.getRow();
  100.     y = m.getColumn();
  101.     }
  102.    
  103.     void subtract(Matrix m) {
  104.     for (int i = 0; i < y; i++) for (int j = 0; j < x; j++) {
  105.         try {
  106.         mat[i][j] -= m.getElementAt(i, j);
  107.         }
  108.         catch (Exception e) {
  109.         throw new IllegalArgumentException("Matrices size mismatch");
  110.         }
  111.     }
  112.     }
  113.    
  114.     void subtract(Matrix m, Matrix n) {
  115.     Matrix temp = new Matrix(m.getRow(), m.getColumn());
  116.     for (int i = 0; i < y; i++) for (int j = 0; j < x; j++) {
  117.         try {
  118.         temp.setElementAt(i, j, m.getElementAt(i, j) - n.getElementAt(i, j));
  119.         }
  120.         catch (Exception e) {
  121.         throw new IllegalArgumentException("Matrices size mismatch");
  122.         }
  123.     }
  124.     mat = temp.toIntArray();
  125.     x = m.getRow();
  126.     y = m.getColumn();
  127.     }
  128.    
  129.     void multiply(Matrix m) {
  130.     for (int i = 0; i < y; i++) for (int j = 0; j < x; j++) {
  131.         int jumlah = 0;
  132.         for (int k = 0; k < x; k++) {
  133.         try {
  134.             jumlah += mat[i][k] * m.getElementAt(k, j);
  135.         }
  136.         catch (Exception e) {
  137.             throw new IllegalArgumentException("Matrices size mismatch");
  138.         }
  139.         }
  140.         mat[i][j] = jumlah;
  141.     }
  142.     }
  143.    
  144.     void multiply(Matrix m, Matrix n) {
  145.     for (int i = 0; i < y; i++) for (int j = 0; j < x; j++) {
  146.         int jumlah = 0;
  147.         for (int k = 0; k < x; k++) {
  148.         try {
  149.             jumlah += m.getElementAt(i, k) * n.getElementAt(k, j);
  150.         }
  151.         catch (Exception e) {
  152.             throw new IllegalArgumentException("Matrices size mismatch");
  153.         }
  154.         }
  155.         mat[i][j] = jumlah;
  156.     }
  157.     }
  158. }
  159.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement