• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

mnożenie macierzy - język C

VPS Starter Arubacloud
0 głosów
201 wizyt
pytanie zadane 27 maja 2023 w C i C++ przez natalia2002. Początkujący (400 p.)

Czy ktoś mógłby wytłumaczyć mi ten kod mnożenia macierzy? Jeśli chciałabym pomnożyć macierz przez wektor jak powinnam go zmienić?

void dgemm_naive (int n, double* A, double* B, double* C)
{
int i,j,k;
double cij;
for (i=0; i<n; ++i)
 for (j=0; j<n; ++j)
 {
cij = C[i+j*n]; // cij = C[i][j]
for(k=0; k<n; ++k )
 cij += A[i+k*n] * B[k+j*n]; // cij += A[i][k]*B[k][j]
C[i+j*n] = cij; // C[i][j] = cij
 }
}

 

komentarz 27 maja 2023 przez Wiciorny Ekspert (276,880 p.)
Nauczyć się i napisać samemu, skoro to twoje zadanie.
Zapraszam do lektury https://eduinf.waw.pl/inf/utils/002_roz/2008_20.php
komentarz 28 maja 2023 przez Oscar Nałogowiec (29,300 p.)

@natalia2002.,

1. Ten kod to taka "akumulacja" - nie tyle wykonuje samo mnożenie co też dodaje wynik do aktualnej zawartości macierzy wynikowej C (linia 8).

2. Operuje on na macierzach kwadratowych - jest tylko jeden parametr określający wielkość macierzy. Najbardziej elegancko byłoby dodać parametry, by można było mnożyć też macierze nie-kwadratowe. Wtedy macierz o jednym wymiarzy równym 1 byłaby wektorem i efekt osiągnięty. Można co prawda też okroić ten kod tylko do podanego przypadku mnożenia przez wektor - w sumie mnożenie macierzy to mnożenie pierwszej macierzy przez każdą kolumnę drugiej a kolumna to wektor.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 5,690 wizyt
pytanie zadane 19 marca 2018 w C i C++ przez Groshq Użytkownik (590 p.)
0 głosów
1 odpowiedź 395 wizyt
pytanie zadane 7 czerwca 2018 w C i C++ przez Alan Kruszyński Obywatel (1,410 p.)
0 głosów
2 odpowiedzi 1,154 wizyt
pytanie zadane 11 stycznia 2018 w C i C++ przez must Bywalec (2,980 p.)

92,958 zapytań

141,918 odpowiedzi

321,149 komentarzy

62,288 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...