Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- public class Main {
- public static void main(String[] args) throws IOException {
- int size = 1000;
- int[] arrayVxM = new int[size]; //(1) Массив, полученный при умн-ии Вектора на Матрицу
- int[] arrayMxV = new int[size]; //(2) Массив, полученный при умн-ии Матрицы на Вектор
- //I. Запишем в текстовый документ MATRIX.txt матрицу размерностью size x size, состоящую из чисел от -9 до 9
- BufferedWriter writer = new BufferedWriter(new FileWriter("MATRIX.txt"));
- System.out.println("Начал запись в файл");
- long startTime = System.currentTimeMillis();
- StringBuilder stringBuilder = new StringBuilder("");
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < size; j++) {
- int number = (int)(Math.random()*20 - 10);
- if (j != size - 1)
- stringBuilder.append(number).append(" ");
- else
- stringBuilder.append(number);
- }
- if (i != size - 1)
- writer.write(stringBuilder.toString() + "\n");
- else
- writer.write(stringBuilder.toString());
- stringBuilder = new StringBuilder("");
- }
- writer.flush();
- writer.close();
- long finishTime = System.currentTimeMillis();
- System.out.println("Закончил запись в файл за " + (finishTime - startTime) + " миллисекунд.");
- int[] vector = new int[size]; //Исходный вектор размерности size
- //Заполним вектор случайными числами от -9 до 9
- for (int i = 0; i < size; i++) {
- vector[i] = (int)(Math.random()*20 - 10);
- }
- //II. Открываем поток для чтения
- BufferedReader reader = new BufferedReader(new FileReader("MATRIX.txt"));
- //(1) Умножение матрицы на вектор (1000x1000 * 1000x1 = массив 1000x1)
- // P.S. на самом деле размерность вектора - 1x1000, но мы его лишь мысленно перевернем,
- // а по факту просто будем обращаться к его элементам, представляя строку как столбец.
- startTime = System.currentTimeMillis();
- for (int i = 0; i < size; i++) {
- int sum = 0;
- String[] s = reader.readLine().split("\\s+");
- for (int j = 0; j < size; j++) {
- int number = Integer.parseInt(s[j]);
- sum += number * vector[j];
- }
- arrayMxV[i] = sum;
- }
- finishTime = System.currentTimeMillis();
- //Выведение времени, которое заняло умножение матрицы на вектор
- System.out.println("Время умножения матрицы на вектор в миллисекундах: " + (finishTime - startTime));
- //(2) Умножение вектора на матрицу (1x1000 * 1000x1000 = массив 1x1000)
- startTime = System.currentTimeMillis();
- for (int i = 0; i < size; i++) {
- reader = new BufferedReader(new FileReader("MATRIX.txt"));
- int sum = 0;
- for (int j = 0; j < size; j++) {
- String[] s = reader.readLine().split("\\s+");
- int number = Integer.parseInt(s[i]);
- sum += vector[j] * number;
- }
- arrayVxM[i] = sum;
- }
- finishTime = System.currentTimeMillis();
- //Выведение времени, которое заняло умножение вектора на матрицу
- System.out.println("Время умножения вектора на матрицу в миллисекундах: " + (finishTime - startTime));
- reader.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement