Nowe posty

xx Dystrybucja pod HP Omen (6)
2024-03-27, 23:30:08
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
lamp Problem z Linux Lite po instalacji (0)
2024-03-27, 19:50:30
xx Ile pingwinów? (1)
2024-03-27, 08:59:24
xx konfiguracja pale moon (0)
2024-03-24, 21:53:42
xx Plasma 6 w Neonie ssie trochę mniej ... (10)
2024-03-23, 02:38:11
xx problem z instalacja sterowników do karty sieciowej (3)
2024-03-18, 18:10:16
xx Plik abc.001 (1)
2024-03-17, 17:48:27
xx Zlecę dopracowanie programu w MatLab (0)
2024-03-13, 15:28:40
xx Linux Mint 21.3 XFCE brak dźwieku po paru minutach (karta muzyczna zintegrowana) (5)
2024-03-12, 23:07:01

Autor Wątek: [C++] mnożenie macierzy  (Przeczytany 3156 razy)

kordi

  • Gość
[C++] mnożenie macierzy
« dnia: 2013-02-28, 21:06:58 »
Witajcie!
  Chciałabym pomnożyć dwie macierze za pomoca Blasa.
Wiem jak to zrobić, gdy mamy macierze postaci x[m][m], y[m][m]

tzn.
 .....
double *x, *y;
//tworzymy dynamiczna alokacje pamieci:
 x = new double [m*m];
  y = new double [m*m];

//wyswietlamy elementy tablicy x
   for (int i = 0; i < m; i++){
      for (int j = 0; j < m; j++)
      cout<< a[i*m + j];
      cout<<"\\n";
   }
 ....
W chili obecnej musze pomnozyc dwie tablice majace postac: t[m][m][m][m].

Dynamiczna alokacje pamieci robimy w nastepujacy sposob:
tt = new double[m*m*m*m];
Natomiast nie wiem jak pozniej taka tablice mam wyswietlic.

Czy moglabym liczyc na Wasza pomoc w tym temacie?

Offline ultr

  • Users
  • Guru
  • *****
  • Wiadomości: 1177
    • Zobacz profil
[C++] mnożenie macierzy
« Odpowiedź #1 dnia: 2013-03-01, 20:14:19 »
Raczej trudno będzie Ci przedstawić graficznie macierz czterowymiarową.

Chyba najlepiej wypisać wszystkie jej elementy:
...
  for (int i = 0; i < m; ++i)
    for (int j = 0; j < m; ++j)
      for (int k = 0; k < m; ++k)
        for (int l = 0; l < m; ++l)
          printf("t[%d][%d][%d][%d] = %f\\n", i, j, k, l, a[i*m*m*m + j*m*m + k*m + l]);
...
W rezultacie dostaniesz:
t[0][0][0][0] = 1.00000000
t[0][0][0][1] = 1.00000000
t[0][0][0][2] = 1.00000000
t[0][0][1][0] = 1.00000000
t[0][0][1][1] = 1.00000000
t[0][0][1][2] = 1.00000000
t[0][0][2][0] = 1.00000000
t[0][0][2][1] = 1.00000000
t[0][0][2][2] = 1.00000000
t[0][1][0][0] = 1.00000000
...