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:
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:
- Rozpocznij program.
- Wprowadź wiersze i kolumny pierwszej macierzy.
- Wprowadź wiersze i kolumny drugiej macierzy.
- Jeśli macierze są niezgodne do mnożenia, wypisz błąd i wyjdź.
- Zdefiniuj macierz i wprowadź liczby w pierwszej macierzy.
- Zdefiniuj kolejną macierz i wprowadź liczbę w drugiej macierzy.
- Zdefiniuj macierz do przechowywania wyniku mnożenia dwóch macierzy.
- Ustaw pętlę, aby iterowała po wierszu pierwszej macierzy.
- Skonfiguruj wewnętrzną pętlę, aby iterować po kolumnie drugiej macierzy.
- Ustaw kolejną wewnętrzną pętlę, aby iterować po kolumnie pierwszej macierzy.
- 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.
- Wyświetl wynikową macierz.
- 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.