Jak napisać program w C do mnożenia dwóch macierzy

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:

Ilustracja mnożenia macierzy

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:

Ilustracja wyniku mnożenia macierzy

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 zapisz wynik mnożenia w macierzy wynikowej.
  12. Wyświetl wynikową macierz.
  13. 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:

Wynik mnożenia macierzy

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

Wyjście mnożenia macierzy, gdy nie jest to możliwe

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *