我想表达 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;
}
}
相关文章: