Моя задача - создать матрицу A [w] [k] (w, k - не указано), найти ее транспонирование AT [k] [w] и затем умножить их. Но не как AxAT, а как ATxA.
Я нашел транспонированную матрицу, но я не могу сделать это умножение.
int tabA[100][100], tabAT[100][100], tabATA[100][100], w, k, i, p, u;
cin >> w;
cin >> k;
for (i = 0; i < w; i++) { //A
for (p = 0; p < k; p++) {
cin >> tabA[i][p];
}
}
for (i = 0; i < w; i++, cout << endl) {//show A
for (p = 0; p < k; p++) {
cout << tabA[i][p] << " ";
}
}
for (i = 0; i < k; i++) { //AT
for (p = 0; p < w; p++) {
tabAT[i][p] = tabA[p][i];
}
}
for ( i = 0; i < k; i++, cout<<endl) { //show AT
for (p = 0; p < w; p++) {
cout << tabAT[i][p];
}
}
for (i = 0; i < k; i++) //ATA
for (p = 0; p < k; p++) {
tabATA[i][p] = 0;
for (u = 0; u < k; u++)
tabATA[i][p] += tabAT[i][u] * tabA[u][p];
}
for (i = 0; i < k; i++, cout<<endl) { //show ATA
for (p = 0; p < k; p++) {
cout << tabATA[i][p]<<" ";
}
}
Я думаю, что есть некоторая ошибка в части "создать матрицу ATA"но я не знаю где. Выходные данные показывают матрицу с хорошим размером, но неправильными числами.