Vreau sa calculez produsul Kronecker dintre doua matrice. Rezultatul ar trebui sa fie, o matrice tridiagonala, cu valoarea 2 pe diagonala principala, si valoarea -1 pe celelalte diagonale.
Eu obtin niste valori foarte mari...
Code: Select all
#include <iostream>
using namespace std;
const int n = 4;
void Kroneckerproduct(int A[n][n], int B[n][n], int C[n*n][n*n])
{
for (int i = 0; i < n; i++) {
for (int k = 0; k < n; k++) {
for (int j = 0; j < n; j++) {
for (int l = 0; l < n; l++) {
C[i + l + 1][j + k + 1] = A[i][j] * B[k][l];
}
}
}
}
}
int main()
{
int A[4][4] = { { 2, -1, 0, 0 }, { -1, 2, -1, 0 }, { 0, -1, 2, -1 }, { 0, 0, -1, 2 } },
B[4][4] = { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0}, { 0, 0, 0, 1} };
int C[n*n][n*n]; //rezultat
Kroneckerproduct(A, B, C);
for (int i = 0; i < n*n; i++) {
for (int j = 0; j < n*n; j++) {
cout<<C[i][j]<<" ";
}
cout<<"\n";
}
system("PAUSE");
return 0;
}