我想表达 2by2 矩阵的乘积

I want to express the product of a 2by2 matrix

本文关键字:2by2      更新时间:2023-10-16

我想输出将 2 乘以 2 矩阵的结果。 我尝试对矩阵元素进行硬编码,但我不擅长使用循环显示它们。我已经尝试了好几次。

#include <iostream>
using namespace std;
int main()
{
int m1[2][2]
{
{1, 2},
{3, 4},
};
int m2[2][2]
{
{5, 6},     
{7, 8},     
};
int m3[2][2] = {0};
// int m3[2][2] = {{1,2},{3,4}};
// m3[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0];
// m3[0][1] = m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1];
// m3[1][0] = m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0];
// m3[1][1] = m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1];
int multiplyTemp1;
int multiplyTemp2;
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
// m3[row][row] += m1[row][col] * m2[col][row];
m3[row][col] += m3[row][col] * m3[col][row];
// if (row == 0 || row == 1)
// {
//     multiplyTemp1 += m1[row][col] * m2[col][row];
// }
}
cout << endl;
}
// cout << multiplyTemp1 << " ";
// cout << endl;
/*
m3 = [00, 01]
[10, 11]
*
*/
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
cout << m3[row][col] << 't';
}
cout << endl;
}
// for (int i = 0; i < 2; ++i)
// {
//     for (int j = 0; j < 2; ++j)
//     {
//         // {1, 2}   {5, 6}
//         // {3, 4}   {7, 8}
//         m3[i][j] = m1[i][j] * m2[j][i] + m1[i][j + 1] * m2[j + 1][i];
//         cout << m3[i][j] << "t";
//     }
//     cout << endl;
// }

return 0;
}

====

我想像这样打印到控制台: 图像 我附上了一张图片

这样,仅显示对角线分量。 如何循环显示它? 不能用双 for 循环显示它? 19 0 0 50

谢谢。

你的逻辑多和两个矩阵有点错误。您必须使用第三个循环才能获得正确的结果,如下所示:

m3[row][col] = 0; 
for (int k = 0; k < 2; k++) 
m3[row][col] += m1[row][k] *  
m2[k][col]; 

以下是完整的工作代码。

#include <iostream>
using namespace std;
int main()
{
int m1[2][2]
{
{1, 2},
{3, 4},
};
int m2[2][2]
{
{5, 6},     
{7, 8},     
};
int m3[2][2] = {0};
int multiplyTemp1;
int multiplyTemp2;
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
m3[row][col] = 0; 
for (int k = 0; k < 2; k++) 
m3[row][col] += m1[row][k] *  
m2[k][col]; 
}
cout << endl;
}
for (int row = 0; row < 2; ++row)
{
for (int col = 0; col < 2; ++col)
{
cout << m3[row][col] << 't';
}
cout << endl;
}
}