t0xicv4p0r

Untitled

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