Jak napisać program w C do mnożenia dwóch macierzy
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 zapisz wynik mnożenia w macierzy wynikowej.
- Wyświetl wynikową macierz.
- Wyjdź z programu.
Jak wykonać mnożenie macierzy za pomocą C
Zaimportuj bibliotekę stdio, aby wprowadzić liczby i odpowiednio wyświetlić dane wyjściowe. Zadeklaruj funkcję main i poproś użytkownika o podanie liczby kolumn i liczby wierszy dla obu macierzy za pomocą funkcji print() .
Użyj funkcji scanf() , aby otrzymać dane wejściowe. %d jest specyfikatorem formatu dziesiętnego, który zapewnia, że program odczytuje dane wejściowe jako liczbę.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int r1, r2, c1, c2;
printf("Enter the number of rows for the first matrix:\n");
scanf("%d", &r1);
printf("Enter the number of columns for the first matrix:\n");
scanf("%d", &c1);
printf("Enter the number of rows for the second matrix:\n");
scanf("%d", &r2);
printf("Enter the number of columns for the second matrix:\n");
scanf("%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ź.
if (c1! = r2) {
printf("The matrices cannot be multiplied together");
exit(-1);
}
Jeśli wszystko jest w porządku, zdefiniuj dwie wielowymiarowe tablice m1 i m2 o rozmiarze podanym przez użytkownika. Poproś użytkownika o wprowadzenie kolejno elementów obu macierzy. Użyj zagnieżdżonej pętli for , aby pobrać dane wejściowe zarówno dla wiersza, jak i dla kolumny macierzy. Zewnętrzna pętla for iteruje po wierszach macierzy, a wewnętrzna po kolumnach macierzy.
int m1[r1][c1], m2[r2][c2];
printf("Enter the elements of the first matrix\n");
for (int i = 0; i < r1; i++) {
for (int j = 0; j < c1; j++) {
scanf("%d", &m1[i][j]);
}
}
printf("Enter the elements of the second matrix\n");
for (int i = 0; i < r2; i++) {
for (int j = 0; j < c2; j++) {
scanf("%d",&m2[i][j]);
}
}
Zdefiniuj trzecią macierz, mul , rzędu r1 * c2 do przechowywania wyniku. Użyj zagnieżdżonej pętli for , 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 wzoru mul[i][j] += m1[i][k] * m2[k][j] , aby pomnożyć elementy macierzy.
Formuła używa skróconego operatora += w celu dodania mul[i][j] do obliczonego wyrażenia i zapisania go. Pamiętaj, aby zainicjować wynik na zero przed dodaniem do niego.
int mul[r1][c2];
for (int i = 0; i < r1; i++) {
for (int j = 0; j < c2; j++) {
mul[i][j] = 0;
for (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.
printf("The multiplied matrix is: \n");
for (int i = 0; i < r1; i++) {
for (int j = 0; j < c2; j++) {
printf("%d\t", mul[i][j]);
}
printf("\n");
}
return 0;
}
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.
Dodaj komentarz