Pojawil mi sie w tym zadaniu jeszcze jeden problem. Wyknalam mnozenie macierzy, co sie udalo i teraz chcialabym zastosowac biblioteke BLAS.
Zrobilam to zgodnie z dokumentacja http://www.netlib.org/blas/dgemm.f
Kod:
Macierz Macierz:: operator* (const Macierz &other)
{
Macierz AxB(wiersze, other.kolumny);
char TRANSA = 'N';
char TRANSB = 'N';
int M = wiersze;
int N = other.kolumny;
int K = kolumny;
int LDB = other.wiersze;
double alpha = 1.0;
double beta = 0.0;
dgemm_(&TRANSA,
&TRANSB,
&M,
&N,
&K,
&alpha,
dane,
&M,
other.dane,
&LDB,
&beta,
AxB.dane,
&M);
return AxB;
}
Ale cos sie pozypalo.
Mnoze 2 macierze:
Kod:
NR1
d[0][0]= 1 d[0][1]= 2 d[0][2]= 2
d[1][0]= 1 d[1][1]= 0 d[1][2]= 0
d[2][0]= 2 d[2][1]= 2 d[2][2]= 1
d[3][0]= 3 d[3][1]= 1 d[3][2]= 5
NR4
d[0][0]= 1 d[0][1]= 2 d[0][2]= 1 d[0][3]= 1
d[1][0]= 1 d[1][1]= 1 d[1][2]= 2 d[1][3]= 2
d[2][0]= 0 d[2][1]= 0 d[2][2]= 1 d[2][3]= 1
o otrzymuje:
Kod:
nr5
d[0][0]= 2 d[0][1]= 5 d[0][2]= 7 d[0][3]= 10
d[1][0]= 2 d[1][1]= 5 d[1][2]= 5 d[1][3]= 8
d[2][0]= 2 d[2][1]= 4 d[2][2]= 8 d[2][3]= 6
d[3][0]= 1 d[3][1]= 3 d[3][2]= 3 d[3][3]= 7
Czy moglabym prosic o wskazanie, gdzie lezy moj blad w rozumowaniu?