Hej,
Próbuję napisać program obliczający regresję liniową. Niestety zatrzymałam się na mnożeniu macierzy zdefiniowanych przez użytkownika na początku programu. Wszystko byłoby okej gdyby nie błędny wynik macierzy po pomnożeniu. nie mam pojęcia o co może chodzić. Byłabym bardzo wdzięczna za jakąkolwiek wskazówkę. Poniżej kod programu. :)
#include <iostream>
using namespace std;
int main() {
int wierszeA, kolumnyA;
int wierszeB, kolumnyB;
cout<< "Podaj liczbe wierszy macierzy A: ";
cin >> wierszeA;
cout << "Podaj liczbe kolumn macierzy A: ";
cin >> kolumnyA;
wierszeB = kolumnyA;
kolumnyB = 1;
cout<< "Rozmiar A: ["<<wierszeA<<","<<kolumnyA<<"]"<<endl;
cout << "rozmiar B: ["<<wierszeB<<","<<kolumnyB<<"]"<<endl;
//budowanie
int i,j,k,l;
int macierzA[wierszeA][kolumnyA];
int macierzB[wierszeB][kolumnyB];
for(i=0; i<wierszeA; i++){
for(j=0; j<kolumnyA; j++){
cout << "Podaj element ["<<i<<","<< j<<"] macierzy A"<< endl;
cin >> macierzA[i][j];
}
}
for(i=0; i<wierszeB; i++){
for(j=0; j<kolumnyB; j++){
cout << "Podaj element ["<<i+1<<","<< j+1<<"] macierzy B"<< endl;
cin >> macierzB[i][j];
}
}
//wyswietlanie
cout << "Macierz A: " << endl;
for(i=0; i<wierszeA; i++){
for(j=0; j<kolumnyA; j++){
cout << macierzA[i][j] <<" ";
}
cout << endl;
}
cout << endl;
cout << "Macierz B: " << endl;
for(i=0; i<wierszeB; i++){
for(j=0; j<kolumnyB; j++){
cout << macierzB[i][j] <<" ";
}
cout << endl;
}
cout << endl;
//transponowanie
int macierzAT[10][10];
int wierszeAT, kolumnyAT;
wierszeAT = kolumnyA;
kolumnyAT = wierszeA;
for(i=0; i<wierszeA; i++){ //wymiar macierzy transponowanej
for(j=0; j<kolumnyA; j++){
macierzAT[j][i] = macierzA[i][j];
}
cout<< endl;
}
cout << "To jest transponowana macierz A: " << endl;
for(i=0; i<kolumnyA; i++){
for(j=0; j<wierszeA; j++){
cout << macierzAT[i][j] <<" ";
}
cout << endl;
}
// mnożymy macierz A przez B i wynik umieszczamy w ATxA
int macierzATxA[100][100];
//macierzATxA[i][j]=0;
for(i=0; i<wierszeAT; i++){
for(j=0; j<kolumnyAT; j++){
for(k=0; k<wierszeA; k++){
macierzATxA[i][j]=0;
macierzATxA[i][j] = macierzATxA[i][j] + macierzAT[i][k] * macierzA[k][i];
}
}
cout << endl;
}
cout << "Macierz ATxA wynosi: " << endl;
for(i=0; i<kolumnyA; i++){
for(j=0; j<kolumnyA; j++){
cout << macierzATxA[i][j] << " ";
}
cout << endl;
}
}