Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Matryce odgrywają istotną rolę w wielu różnych dziedzinach, w tym w grafice komputerowej, kryptografii i komunikacji bezprzewodowej. Macierz to prostokątna tablica liczb ułożonych w wiersze i kolumny, używana do reprezentowania obiektu matematycznego lub jego właściwości.

Jedną z operacji, które możesz na nich wykonać, jest mnożenie macierzy. Znajduje to zastosowanie w wielu dziedzinach, takich jak obliczenia aerodynamiczne, przetwarzanie sygnałów, przetwarzanie obrazu i analiza sejsmiczna. Ale jak dokładnie mnoży się macierze?

Jak pomnożyć dwie macierze

Reprezentujesz rząd macierzy jako iloczyn liczby wierszy (m) i liczby kolumn (n). Aby pomnożyć dwie macierze, liczba kolumn pierwszej macierzy musi być równa liczbie wierszy drugiej macierzy.

Jeśli masz dwie macierze, macierz A rzędu m × n i B rzędu n × p, rząd macierzy iloczynu będzie m × p. Załóżmy na przykład, że masz macierz A zawierającą dwa wiersze (m) i trzy kolumny (n) oraz macierz B zawierającą trzy wiersze (n) i dwie kolumny (p). Wynikowa macierz będzie składać się z dwóch wierszy i dwóch kolumn:

instagram viewer

Mnożysz dwie macierze za pomocą iloczynu skalarnego. Aby otrzymać wartość pierwszego elementu macierzy wypadkowej, należy pomnożyć i dodać elementy pierwszego wiersza pierwszej macierzy i pierwszego wiersza drugiej macierzy element po elemencie jako:

(1, 2, 3) • (7, 9, 11) = 1×7 + 2×9 + 3×11 = 58

Podobnie dla drugiego elementu pomnóż pierwszy wiersz pierwszej macierzy i drugą kolumnę drugiej macierzy jako:

(1, 2, 3) • (8, 10, 12) = 1×8 + 2×10 + 3×12 = 64

W przypadku trzeciego elementu pomnóż drugi wiersz pierwszej macierzy i pierwszą kolumnę drugiej macierzy jako:

(4, 5, 6) • (7, 9, 11) = 4×7 + 5×9 + 6×11 = 139

W przypadku czwartego elementu pomnóż drugi wiersz pierwszej macierzy i drugą kolumnę drugiej macierzy jako:

(4, 5, 6) • (8, 10, 12) = 4×8 + 5×10 + 6×12 = 154

Zatem wypadkowa macierz to:

Możesz odkrywać i budować różne programy dla różnych operacji na macierzach, takich jak:

  • dodawanie i odejmowanie dwóch macierzy
  • znalezienie transpozycji macierzy
  • sprawdzanie, czy dwie macierze są identyczne

Algorytm mnożenia dwóch macierzy

Postępuj zgodnie z tym algorytmem, aby zbudować program do mnożenia dowolnych dwóch macierzy:

  1. Rozpocznij program.
  2. Wprowadź wiersze i kolumny pierwszej macierzy.
  3. Wprowadź wiersze i kolumny drugiej macierzy.
  4. Jeśli macierze są niezgodne do mnożenia, wypisz błąd i wyjdź.
  5. Zdefiniuj macierz i wprowadź liczby w pierwszej macierzy.
  6. Zdefiniuj kolejną macierz i wprowadź liczbę w drugiej macierzy.
  7. Zdefiniuj macierz do przechowywania wyniku mnożenia dwóch macierzy.
  8. Ustaw pętlę, aby iterowała po wierszu pierwszej macierzy.
  9. Skonfiguruj wewnętrzną pętlę, aby iterować po kolumnie drugiej macierzy.
  10. Ustaw kolejną wewnętrzną pętlę, aby iterować po kolumnie pierwszej macierzy.
  11. Pomnóż i dodaj elementy, korzystając ze wzoru mul[i][j] += m1[i][k] * m2[k][j] i zapisać wynik mnożenia w wynikowej macierzy.
  12. Wyświetl wynikową macierz.
  13. Wyjdź z programu.

Jak wykonać mnożenie macierzy za pomocą C

Cały kod źródłowy mnożenia macierzy przy użyciu C jest w tym zawarty Repozytorium GitHub i jest darmowy.

Zaimportuj bibliotekę stdio, aby wprowadzić liczby i odpowiednio wyświetlić dane wyjściowe. zadeklarować główny funkcji i poproś użytkownika o wprowadzenie liczby kolumn i liczby wierszy dla obu macierzy za pomocą wydrukować() funkcjonować.

Użyj skanf() funkcja odbierania danych wejściowych. %D to specyfikator formatu dziesiętnego, który zapewnia, że ​​program odczytuje dane wejściowe jako liczbę.

#włączać
#włączać

intgłówny()
{
int r1, r2, c1, c2;

drukujf(„Wprowadź liczbę wierszy Do pierwsza macierz:\n");
skanf("%d", &r1);

drukujf(„Wprowadź liczbę kolumn Do pierwsza macierz:\n");
skanf("%d", &c1);

drukujf(„Wprowadź liczbę wierszy Do druga macierz:\n");
skanf("%d", &r2);

drukujf(„Wprowadź liczbę kolumn Do druga macierz:\n");
skanf("%d", &c2);

Sprawdź, czy mnożenie macierzy jest możliwe. Jeśli liczba kolumn pierwszej macierzy nie jest równa liczbie wierszy drugiej macierzy, wyświetl błąd i wyjdź.

jeśli (c1 != r2) {
printf("Macierzy nie można mnożyć razem");
Wyjście(-1);
}

Jeśli wszystko jest w porządku, zdefiniuj dwie tablice wielowymiarowe, m1 I m2, o rozmiarze podanym przez użytkownika. Poproś użytkownika o wprowadzenie kolejno elementów obu macierzy. Użyj zagnieżdżonego Do pętla, aby pobrać dane wejściowe zarówno dla wiersza, jak i kolumny macierzy. Zewnętrzna pętla for iteruje po wierszach macierzy, a wewnętrzna po kolumnach macierzy.

intm1[r1][c1], m2[r2][c2];
printf("Podaj elementy pierwszej macierzy\n");

Do (int ja = 0; i < r1; i++) {
Do (int j = 0; j < c1; j++) {
skanf("%D", &m1[i][j]);
}
}

printf("Podaj elementy drugiej macierzy\n");

Do (int ja = 0; i < r2; i++) {
Do (int j = 0; j < c2; j++) {
skanf("%D",&m2[i][j]);
}
}

Zdefiniuj trzecią macierz, mul, rzędu r1 * c2 do przechowywania wyniku. Użyj zagnieżdżonego Do pętla, aby wykonać mnożenie. Najbardziej zewnętrzna pętla for wykonuje iterację po wierszach, następna wewnętrzna pętla przechodzi po kolumnach, a najbardziej wewnętrzna wykonuje mnożenie. Użyj formuły mul[i][j] += m1[i][k] * m2[k][j] mnożyć elementy macierzy.

Formuła używa operatora skróconego += dodać mul[i][j] do obliczonego wyrażenia i zapisać je. Pamiętaj, aby zainicjować wynik na zero przed dodaniem do niego.

intmul[r1][c2];

Do (int ja = 0; i < r1; i++) {
Do (int j = 0; j < c2; j++) {
mul[i][j] = 0;

Do (int k = 0; k < c1; k++) {
mul[i][j] += m1[i][k] * m2[k][j];
}
}
}

Wyświetl zwielokrotnioną macierz za pomocą zagnieżdżonej pętli for, która iteruje po wierszach i kolumnach wynikowych macierzy. Użyj znaku nowej linii (\n), aby wyświetlić każdy z wierszy w oddzielnym wierszu. Wróć 0, aby wyjść z głównej funkcji i programu.

drukujf(„Pomnożona macierz to: \n”);

Do (int ja = 0; i < r1; i++) {
Do (int j = 0; j < c2; j++) {
drukujf("%d\t", mul[i][j]);
}

drukujf("\N");
}

powrót0;
}

Wynik programu mnożenia macierzy

Po uruchomieniu programu mnożenia macierzy powinieneś zobaczyć coś w rodzaju następującego wyniku:

Jeśli wpiszesz nieprawidłowe dane, mnożenie macierzy nie powiedzie się i zobaczysz coś takiego:

Macierze mają wiele zastosowań

Różne dziedziny wykorzystują macierze, takie jak nauka, handel, ekonomia, geologia, robotyka i animacja. Macierzy będziesz używać głównie w matematyce do rozwiązywania równań liniowych i przedstawiania przekształceń, takich jak obrót lub translacja. Macierze mogą obliczać wielkość odbicia i załamania, a także rozwiązywać równania sieci prądu przemiennego w obwodach elektrycznych.

Poza aplikacjami edukacyjnymi macierze można wykorzystywać do analizy danych ankietowych, głosowań, przeliczania list pozycji i innych zbiorów danych.