Матрицы играют жизненно важную роль во многих областях, включая компьютерную графику, криптографию и беспроводную связь. Матрица представляет собой прямоугольный массив чисел, расположенных в строках и столбцах, используемый для представления математического объекта или его свойства.
Одной из операций, которую вам может понадобиться выполнить над ними, является умножение матриц. Это находит применение во многих областях, таких как расчеты аэродинамики, обработка сигналов, обработка изображений и сейсмический анализ. Но как именно вы умножаете матрицы?
Как умножить две матрицы
Вы представляете порядок матрицы как произведение количества строк (m) и количества столбцов (n). Чтобы перемножить две матрицы, количество столбцов первой матрицы должно быть равно количеству строк второй матрицы.
Если у вас есть две матрицы, матрица A порядка m × n и B порядка n × p, порядок матрицы произведения будет m × p. Например, предположим, что у вас есть матрица A, содержащая две строки (m) и три столбца (n), и матрица B, содержащая три строки (n) и два столбца (p). Результирующая матрица будет состоять из двух строк и двух столбцов:
Вы умножаете две матрицы, используя скалярное произведение. Чтобы получить значение первого элемента результирующей матрицы, умножьте и сложите элементы первой строки первой матрицы и первой строки второй матрицы по элементам следующим образом:
(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58
Точно так же для второго элемента умножьте первую строку первой матрицы и второй столбец второй матрицы как:
(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64
Для третьего элемента умножьте вторую строку первой матрицы и первый столбец второй матрицы как:
(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139
Для четвертого элемента умножьте вторую строку первой матрицы и второй столбец второй матрицы как:
(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154
Таким образом, результирующая матрица имеет вид:
Вы можете исследовать и создавать различные программы для различных операций с матрицами, например:
- сложение и вычитание двух матриц
- нахождение транспонирования матрицы
- проверка идентичности двух матриц
Алгоритм умножения двух матриц
Следуйте этому алгоритму, чтобы построить программу для умножения любых двух матриц:
- Начните программу.
- Введите строки и столбцы первой матрицы.
- Введите строки и столбцы второй матрицы.
- Если матрицы несовместимы для умножения, вывести ошибку и выйти.
- Определите матрицу и введите числа в первую матрицу.
- Определите другую матрицу и введите число во второй матрице.
- Определите матрицу для хранения результата умножения двух матриц.
- Установите цикл для перебора строки первой матрицы.
- Настройте внутренний цикл для перебора столбца второй матрицы.
- Установите другой внутренний цикл для итерации по столбцу первой матрицы.
- Умножьте и сложите элементы по формуле mul[i][j] += m1[i][k] * m2[k][j] и сохранить результат умножения в результирующей матрице.
- Отобразите результирующую матрицу.
- Выйдите из программы.
Как выполнить умножение матриц с помощью C
Весь исходный код для умножения матриц с использованием C находится в этом Репозиторий GitHub и может использоваться бесплатно.
Импортируйте библиотеку stdio для ввода чисел и соответствующего отображения вывода. Объявить основной функцию и попросите пользователя ввести количество столбцов и количество строк для обеих матриц, используя Распечатать() функция.
Использовать сканф() функция для приема ввода. %d — это спецификатор десятичного формата, который гарантирует, что программа читает ввод как число.
#включать
#включатьинтосновной()
{
инт г1, г2, с1, с2;
printf("Введите количество строк для первая матрица:\n");
сканф("%d", &r1);
printf("Введите количество столбцов для первая матрица:\n");
сканф("%d", &c1);
printf("Введите количество строк для вторая матрица:\n");
сканф("%d", &r2);
printf("Введите количество столбцов для вторая матрица:\n");
сканф("%d", &c2);
Убедитесь, что умножение матриц возможно. Если количество столбцов первой матрицы не равно количеству строк второй матрицы, вывести ошибку и выйти.
если (c1 != r2) {
printf("Матрицы нельзя перемножать");
Выход(-1);
}
Если все хорошо, определите два многомерных массива, м1 и м2, с размером, который указал пользователь. Попросите пользователя ввести элементы обеих матриц один за другим. Используйте вложенный для цикл, чтобы получить ввод как для строки, так и для столбца матрицы. Внешний цикл for перебирает строки матрицы, а внутренний цикл — столбец матрицы.
интм1[р1][с1], м2[р2][с2];
printf("Введите элементы первой матрицы\n");для (инт я = 0; я < г1; я++) {
для (инт Дж = 0; j < с1; я++) {
сканф("%d", &m1[i][j]);
}
}
printf("Введите элементы второй матрицы\n");
для (инт я = 0; я < г2; я++) {
для (инт Дж = 0; j < с2; я++) {
сканф("%d",&m2[i][j]);
}
}
Определите третью матрицу, мул, порядка r1 * c2 для сохранения результата. Используйте вложенный для цикла для выполнения умножения. Самый внешний цикл for перебирает строки, следующий внутренний цикл перебирает столбцы, а самый внутренний выполняет умножение. Используйте формулу mul[i][j] += m1[i][k] * m2[k][j] умножить элементы матрицы.
В формуле используется сокращенный оператор += добавить мул [я] [j] к вычисляемому выражению и сохранить его. Не забудьте инициализировать результат нулем перед добавлением к нему.
интмул[р1][с2];для (инт я = 0; я < г1; я++) {
для (инт Дж = 0; j < с2; я++) {
мул [я] [j] = 0;
для (инт к = 0; к < с1; к++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}
Отобразите умноженную матрицу, используя вложенный цикл for, который выполняет итерацию по строкам и столбцам результирующей матрицы. Используйте символ новой строки (\n), чтобы отобразить каждую строку на отдельной строке. Возврат 0 для выхода из основной функции и программы.
printf("Матрица умножения: \n"); для (инт я = 0; я < г1; я++) {
для (инт Дж = 0; j < с2; я++) {
printf("%d\t", mul[i][j]);
}
printf("\п");
}
возвращаться0;
}
Вывод программы умножения матриц
При запуске программы умножения матриц вы должны увидеть что-то вроде следующего:
Если вы введете неверный ввод, умножение матриц завершится ошибкой, и вы увидите что-то вроде этого:
Матрицы имеют множество применений
В различных областях используются матрицы, такие как наука, торговля, экономика, геология, робототехника и анимация. В основном вы будете использовать матрицы в математике для решения линейных уравнений и представления преобразований, таких как вращение или перемещение. Матрицы могут рассчитывать количество отражений и преломлений, а также решать уравнения сети переменного тока в электрических цепях.
Помимо образовательных приложений, вы можете использовать матрицы для анализа данных опросов, данных голосования, вычислений списков элементов и других наборов данных.