Матриците играят жизненоважна роля в много различни области, включително компютърна графика, криптография и безжична комуникация. Матрицата е правоъгълен масив от числа, подредени в редове и колони, използвани за представяне на математически обект или негово свойство.
Една от операциите, които може да се наложи да извършите върху тях, е умножението на матрицата. Това намира приложение в много области като аеродинамични изчисления, обработка на сигнали, обработка на изображения и сеизмичен анализ. Но как точно се умножават матрици?
Как да умножим две матрици
Вие представяте реда на матрица като произведение на броя на редовете (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 за въвеждане на числа и показване на изхода съответно. Декларирайте основен и помолете потребителя да въведе броя на колоните и броя на редовете за двете матрици, като използва печат () функция.
Използвай scanf() функция за получаване на вход. %д е спецификаторът на десетичен формат, който гарантира, че програмата чете входа като число.
#включват
#включватвътросновен()
{
вътр r1, r2, c1, c2;
printf(„Въведете броя на редовете за първата матрица:\n");
сканиране("%d", &r1);
printf(„Въведете броя на колоните за първата матрица:\n");
сканиране("%d", &c1);
printf(„Въведете броя на редовете за втората матрица:\n");
сканиране("%d", &r2);
printf(„Въведете броя на колоните за втората матрица:\n");
сканиране("%d", &c2);
Проверете дали умножението на матрицата е възможно. Ако броят на колоните на първата матрица не е равен на броя на редовете на втората матрица, покажете грешка и излезте.
if (c1 != r2) {
printf("Матриците не могат да се умножават заедно");
изход(-1);
}
Ако всичко е наред, дефинирайте два многомерни масива, m1 и м2, с предоставения от потребителя размер. Помолете потребителя да въведе елементите на двете матрици един по един. Използвайте вложено за цикъл, за да вземе входа както за реда, така и за колоната на матрицата. Външният for цикъл итерира през редовете на матрицата, а вътрешният цикъл през колоната на матрицата.
вътрm1[r1][c1], м2[r2][c2];
printf("Въведете елементите на първата матрица\n");за (вътр аз = 0; i < r1; i++) {
за (вътр j = 0; j < c1; j++) {
scanf("%д", &m1[i][j]);
}
}
printf("Въведете елементите на втората матрица\n");
за (вътр аз = 0; i < r2; i++) {
за (вътр j = 0; j < c2; j++) {
scanf("%д",&m2[i][j]);
}
}
Дефинирайте трета матрица, мул, от ред r1 * c2 за съхраняване на резултата. Използвайте вложено за цикъл за извършване на умножението. Най-външният for цикъл итерира през редовете, следващият вътрешен цикъл итерира през колоните, а най-вътрешният изпълнява умножението. Използвайте формулата mul[i][j] += m1[i][k] * m2[k][j] за умножаване на елементите на матрицата.
Формулата използва съкратения оператор += добавям много[i][j] към изчисления израз и го съхранете. Не забравяйте да инициализирате резултата до нула, преди да добавите към него.
вътрмул[r1][c2];за (вътр аз = 0; i < r1; i++) {
за (вътр j = 0; j < c2; j++) {
mul[i][j] = 0;
за (вътр k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}
Покажете умножената матрица с помощта на вложен for цикъл, който обхожда редовете и колоните на получените матрици. Използвайте знака за нов ред (\n), за да покажете всеки от редовете на отделен ред. Върнете 0, за да излезете от основната функция и програмата.
printf("Умножената матрица е: \n"); за (вътр аз = 0; i < r1; i++) {
за (вътр j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}
printf("\н");
}
връщане0;
}
Резултатът от програмата за умножение на матрици
Трябва да видите нещо като следния изход, когато стартирате програмата за умножение на матрици:
Ако въведете невалиден вход, умножението на матрицата е неуспешно и ще видите нещо подобно:
Матриците имат много приложения
Различни области използват матрици като наука, търговия, икономика, геология, роботика и анимация. Ще използвате главно матрици в математиката за решаване на линейни уравнения и представяне на трансформации като ротация или транслация. Матриците могат да изчисляват степента на отражение и пречупване, както и да решават уравнения на AC мрежа в електрически вериги.
Освен образователни приложения, можете да използвате матрици за анализ на данни от проучвания, данни от гласуване, изчисляване на списъци с елементи и други набори от данни.