t0xicv4p0r

Untitled

Feb 6th, 2019
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.36 KB | None | 0 0
  1. package learningjava;
  2.  
  3. import java.util.ArrayList;
  4.  
  5. public class SMatrix {
  6.  
  7.     private int order;
  8.     private double[][] values;
  9.     private static double[][] def = { { 0 } };
  10.  
  11.     public SMatrix(int order, double[][] values) {
  12.         this.order = order;
  13.         this.values = values;
  14.     }
  15.  
  16.     public SMatrix() {
  17.         this(1, def);
  18.     }
  19.  
  20.     public SMatrix(SMatrix m) {
  21.         this(m.order, m.values);
  22.     }
  23.  
  24.     public int getOrder() {
  25.         return this.order;
  26.     }
  27.  
  28.     public void setOrder(int order) {
  29.         this.order = order;
  30.     }
  31.  
  32.     public void multiplyRow(int row, int c) {
  33.         for (int i = 0; i < order; i++) {
  34.             this.values[row - 1][i] *= c;
  35.         }
  36.     }
  37.  
  38.     public void addRows(int row1, int row2) {
  39.         for (int i = 0; i < order; i++) {
  40.             this.values[row2 - 1][i] += this.values[row1 - 1][i];
  41.         }
  42.     }
  43.  
  44.     public void switchRow(int row1, int row2) {
  45.         double[] temp = new double[order];
  46.         for (int i = 0; i < order; i++) {
  47.             temp[i] = this.values[row1 - 1][i];
  48.             this.values[row1 - 1][i] = this.values[row2 - 1][i];
  49.             this.values[row2 - 1][i] = temp[i];
  50.         }
  51.     }
  52.  
  53.     public static SMatrix addMatrix(SMatrix m1, SMatrix m2) {
  54.         double[][] temp = new double[m1.order][m1.order];
  55.         SMatrix m;
  56.         if (m1.order != m2.order) {
  57.             System.out.println("the 2 matrices have to be of the same order");
  58.             return new SMatrix();
  59.         } else {
  60.             for (int i = 0; i < m1.order; i++) {
  61.                 for (int j = 0; j < m1.order; j++) {
  62.                     temp[i][j] = m1.values[i][j] + m2.values[i][j];
  63.                 }
  64.             }
  65.             m = new SMatrix(m1.order, temp);
  66.             return m;
  67.         }
  68.  
  69.     }
  70.  
  71.     public static SMatrix multiplyMatrix(SMatrix m1, SMatrix m2) {
  72.         double[][] temp = new double[m1.order][m1.order];
  73.         double sum = 0;
  74.         int c = 0, d = 0;
  75.  
  76.         ArrayList<Double> row = new ArrayList<Double>();
  77.         for (int k = 0; k < m1.order; k++) {
  78.             for (int i = 0; i < m1.order; i++) {
  79.                 for (int j = 0; j < m1.order; j++) {
  80.  
  81.                     sum += m1.values[d][j] * m2.values[j][i];
  82.  
  83.                 }
  84.  
  85.                 row.add(sum);
  86.                 sum = 0;
  87.             }
  88.             d++;
  89.         }
  90.  
  91.         for (int i = 0; i < temp.length; i++) {
  92.  
  93.             for (int j = 0; j < temp.length; j++) {
  94.  
  95.                 temp[i][j] = row.get(c++);
  96.             }
  97.  
  98.         }
  99.         return new SMatrix(m1.order, temp);
  100.  
  101.     }
  102.  
  103.     public static SMatrix getIdentity(SMatrix m) {
  104.         double[][] identity = new double[m.order][m.order];
  105.         for (int i = 0; i < m.order; i++) {
  106.             for (int j = 0; j < m.order; j++) {
  107.                 if (i == j)
  108.                     identity[i][i] = 1;
  109.                 else
  110.                     identity[i][j] = 0;
  111.             }
  112.         }
  113.         return new SMatrix(m.order, identity);
  114.     }
  115.  
  116.     public String toString() {
  117.         String s = "";
  118.         for (int i = 0; i < order; i++) {
  119.             for (int j = 0; j < order; j++) {
  120.  
  121.                 s += values[i][j] + "\t";
  122.                 if (j == order - 1) {
  123.                     s += "\n\n";
  124.  
  125.                 }
  126.             }
  127.  
  128.         }
  129.         return s;
  130.     }
  131.  
  132.     public static void main(String[] args) {
  133.  
  134.         double[][] test = { { 1, 2, 3 }, { 3, 4, 5 }, { 5, 6, 7 } };
  135.         double[][] test2 = { { 2, 2, 5 }, { 1, 7, 5 }, { 5, 6, 7 } };
  136.  
  137.         SMatrix m = new SMatrix(3, test);
  138.         SMatrix m2 = new SMatrix(3, test2);
  139.         System.out.println(m.toString());
  140.         System.out.println(m2.toString());
  141.  
  142.         m.multiplyRow(2, 2);
  143.         System.out.println(m.toString());
  144.  
  145.         m.addRows(1, 2);
  146.         System.out.println(m.toString());
  147.  
  148.         m.switchRow(1, 2);
  149.         System.out.println(m.toString());
  150.  
  151.         System.out.println(m2.toString());
  152.         System.out.println(addMatrix(m, m2).toString());
  153.         System.out.println(getIdentity(m).toString());
  154.         System.out.println(multiplyMatrix(m, m2));
  155.  
  156.     }
  157.  
  158. }
Advertisement
Add Comment
Please, Sign In to add comment