Algoholic.in.ua

Решения > Матрицы. Умножение

Матрицы. Умножение Java

Категория: Решения | Добавлено: 2015-07-30 | Просмотров: 2782

Умножение матриц — одна из основных операций над матрицами. Матрица, получаемая в результате операции умножения, называется произведе́нием ма́триц.

Операция умножения двух матриц выполнима только в том случае, если число столбцов в первом сомножителе равно числу строк во втором; в этом случае говорят, что форма матриц согласована. В частности, умножение всегда выполнимо, если оба сомножителя — квадратные матрицы одного и того же порядка.

Произведение матриц AB состоит из всех возможных комбинаций скалярных произведений вектор-строк матрицы A и вектор-столбцов матрицы B. Элемент матрицы AB с индексами i, j есть скалярное произведение i-ой вектор-строки матрицы A и j-го вектор-столбца матрицы B.


Код реализации на Java:

        public static void main(String[] args) {
          //размерности матриц (n - количество строк матрицы А;
          //m - количество столбцов/строк матрицы А/B; l - количество столбцов матрицы B)
          int n = 3,m = 2,l = 3;
          //сами матрицы
          int[][] A,B,C;
          A = new int[n][m];
          B = new int[m][l];
          C = new int[n][l];
          int i,j,k;
          //заполняем матрицы А,В
          System.out.println("Матрица А:");
          for(i=0; i < n; i++){
              for(j = 0; j < m; j++){
                  A[i][j] = (int)(Math.random() * n * 10);
                  System.out.print(A[i][j] + (j == m - 1?"\n":"\t"));
              }
          }
          System.out.println("Матрица B:");
          for(i = 0; i < m; i++){
              for(j=0;j<l;j++){
                  B[i][j] = (int)(Math.random()*n*10);
                  System.out.print(B[i][j] + (j == l - 1?"\n":"\t"));
              }
          }
          //записываем произведение двух матриц в матрицу С
          System.out.println("Произведение матриц A и B:");
          for(i = 0; i < n; i++){
              for(j = 0; j < l; j++){
                  for(k = 0; k < m; k++){
                      C[i][j] += A[i][k] * B[k][j];
                  }
                  System.out.print(C[i][j] + (j == l - 1?"\n":"\t"));
              }
          }
        }
        

Пример:
Матрица А:
15 6
21 6
11 15
Матрица B:
20 19 0
23 22 17
Произведение матриц A и B:
438 417 102
558 531 102
565 539 255


Яндекс.Метрика
Украина онлайн