【发布时间】:2017-03-21 10:12:27
【问题描述】:
我有一个简单的 C++ 程序,可以乘以:矩阵 * 矩阵:
#include <iostream>
using namespace std;
int main()
{
int n, m, r, i, j, k, si;
cout << "Dimension 1: ";
cin >> n;
cout << "Dimension 2: ";
cin >> m;
cout << "Dimension 3: ";
cin >> r;
int * A = new int[n * m];
int * B = new int[m * r];
int * C = new int[n * r];
for (i = 0; i < n; i++)
for (j = 0; j < m; j++) cin >> A[i * m + j];
for (i = 0; i < m; i++)
for (j = 0; j < r; j++) cin >> B[i * r + j];
for (i = 0; i < n; i++)
for (j = 0; j < r; j++)
{
si = 0;
for (k = 0; k < m; k++)
si += A[i * m + k] * B[k * r + j];
C[i * r + j] = si;
}
cout << endl;
for (i = 0; i < n; i++)
{
for (j = 0; j < r; j++) cout << C[i * r + j] << " ";
cout << endl;
}
getchar();
getchar();
}
如果矩阵真的很大(例如 1000x1000),有哪些方法可以检查结果? (我的意思是使用编程语言,而不是数学)
【问题讨论】:
-
为什么不在小矩阵上检查代码的正确性,比如 3x3 或 4x4?如果小矩阵工作正常(并涵盖所有边缘情况),您只需要检查大情况下的溢出和性能。
-
“矩阵测试数据”的大量 Google 结果
-
你怎么知道你的检查程序是正确的?
-
@alexeykuzmin0 我的主要目标不是找出我的结果是否正确,而是找到一种算法/方法来以另一种方式计算结果,换句话说:实现一个检查第一种方法的解决方案.
标签: c++ math matrix matrix-multiplication