MrGhost75

VECTORxMATRIX

Sep 23rd, 2020
832
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import java.util.Date;
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) {
  6.         int[][] matrix = new int[1000][1000]; //Исходная матрица
  7.         int[] vector = new int[1000]; //Исходный вектор
  8.  
  9.         int[] arrayVxM = new int[1000]; //(1) Массив, полученный при умн-ии Вектора на Матрицу
  10.         int[] arrayMxV = new int[1000]; //(2) Массив, полученный при умн-ии Матрицы на Вектор
  11.  
  12.         //Заполним матрицу случайными числами от -9 до 9
  13.         for (int i = 0; i < matrix.length; i++) {
  14.             for (int j = 0; j < matrix.length; j++) {
  15.                 matrix[i][j] = (int)(Math.random()*20 - 10);
  16.             }
  17.         }
  18.  
  19.         //Заполним вектор случайными числами от -9 до 9
  20.         for (int i = 0; i < vector.length; i++) {
  21.             vector[i] = (int)(Math.random()*20 - 10);
  22.         }
  23.  
  24.  
  25.         //(1) Умножение вектора на матрицу (1x1000 * 1000x1000 = массив 1x1000)
  26.         Date timeBefore = new Date();
  27.  
  28.         for (int j = 0; j < matrix.length; j++) {
  29.             int sum = 0;
  30.             for (int i = 0; i < matrix.length; i++) {
  31.                 sum += vector[i] * matrix[i][j];
  32.             }
  33.             arrayVxM[j] = sum;
  34.         }
  35.  
  36.         Date timeAfter = new Date();
  37.  
  38.         //Выведение времени, которое заняло умножение вектора на матрицу
  39.         System.out.println("Время умножения вектора на матрицу в миллисекундах: " + (timeAfter.getTime() - timeBefore.getTime()));
  40.  
  41.  
  42.         //(2) Умножение матрицы на вектор (1000x1000 * 1000x1 = массив 1000x1)
  43.         // P.S. на самом деле размерность вектора - 1x1000, но мы его лишь мысленно перевернем,
  44.         // а по факту просто будем обращаться к его элементам, представляя строку как столбец.
  45.  
  46.         timeBefore = new Date();
  47.  
  48.         for (int i = 0; i < matrix.length; i++) {
  49.             int sum = 0;
  50.             for (int j = 0; j < matrix.length; j++) {
  51.                 sum += matrix[i][j] * vector[j];
  52.             }
  53.             arrayMxV[i] = sum;
  54.         }
  55.  
  56.         timeAfter = new Date();
  57.  
  58.         //Выведение времени, которое заняло умножение матрицы на вектор
  59.         System.out.println("Время умножения матрицы на вектор в миллисекундах: " + (timeAfter.getTime() - timeBefore.getTime()));
  60.  
  61.  
  62.     }
  63. }
RAW Paste Data