Умножение матриц методом строка на столбец на С++

Программирование Программирование на С++ Решение задач на С++ Умножение матриц методом строка на столбец на С++

В этой теме 0 ответов, 1 участник, последнее обновление  Васильев Владимир Сергеевич 3 мес., 1 неделя назад.

  • Автор
    Сообщения
  • #5510
    @admin

    Алгоритм умножения матриц «Строка на столбец» описан в статье «Матрицы. Понятие. Применение«. Формула следующая:

    $$C_{i,k} = \sum_{j}A_{i,j} \cdot B_{j,k}$$

    На вход подается две матрицы, умножение производится только если матрицы «согласованы». Перед тем, как выполнять умножение, необходимо выделить память под результирующую матрицу:

    int** matrix_mul(int **a, int a_n, int a_m, int **b, int b_n, int b_m) {
      if(a_m != b_n) {
        cout << "Error! a_m != b_n" << endl;
        return NULL;
      }
     
      int **result;
      result = (int**)malloc(sizeof(int*)*a_n);
      for(int i = 0; i < a_n; i++) {
        result[i] = (int*)malloc(sizeof(int)*b_m);
      }
     
      for(int i = 0; i < a_n; i++) {
        for(int j = 0; j < b_m; j++) {
          result[i][j] = 0;
          for(int k = 0; k < a_m; k++) {
            result[i][j] += a[i][k] * b[k][j];
          }
        }
      }
     
      return result;
    }

Для ответа в этой теме необходимо авторизоваться.