这是我到目前为止,但我不认为这是正确的。

for (int i = 0 ; i < 5; i++)
{
    for (int j = 0;  j < 5; j++)
    {
        matrix[i][j] += matrix[i][j] * matrix[i][j];
    }
}
有帮助吗?

解决方案

我不认为你可以自己就地乘以矩阵。

for (i = 0; i < 5; i++) {
    for (j = 0; j < 5; j++) {
        product[i][j] = 0;
        for (k = 0; k < 5; k++) {
            product[i][j] += matrix[i][k] * matrix[k][j];
        }
    }
}

即使使用较小的幼稚矩阵乘法(即其他东西比此为O(n 3 )算法),则仍需要额外的存储空间。

其他提示

建议:如果它不是一门功课不写自己的线性代数例程,使用任何的许多同行评议库是在那里

现在,你的代码,如果你想要做的长期产品的一个术语,那么你就错了,你在做什么是分配给它的每个平方值加上原始值(n*n+n(1+n)*n,无论你最喜欢)

但是,如果你想要做的代数意义上的真实的矩阵乘法,请记住,你有第二矩阵的列(或其他方式做的第一矩阵的行标产品,我现在还不是很确定)...是这样的:

for i in rows:
    for j in cols:
        result(i,j)=m(i,:)·m(:,j)

和标量积 “·”

v·w = sum(v(i)*w(i)) for all i in the range of the indices.

当然,用这种方法,你不能做替代品,因为你需要,你在接下来的步骤中覆盖的值。

此外,解释得远一点泰勒麦克亨利的评论,具有按列乘行的consecuence,在“内部尺寸的”(我不知道这是正确的术语)的该矩阵必须匹配(如果Am x nBn x oA*Cm x o),所以在你的情况下,矩阵可以只有当它的平方的平方(他他他)。

如果你只想玩矩阵一点点,那么你可以尝试八度,例如:平方的矩阵是作为M*MM**2一样容易。

这不是我见过的任何矩阵乘法定义。标准定义是

for (i = 1 to m)
   for (j = 1 to n)
      result(i, j) = 0
      for (k = 1 to s)
         result(i, j) += a(i, k) * b(k, j)

,得到算法的排序的伪码的。在这种情况下,a是一个米×S矩阵和b是S×n个,其结果是一个m×n个,并且下标从1开始..

请注意,乘以代替矩阵是会得到错误的答案,因为你会在使用前要覆盖值。

它已经太长时间,因为我已经做了矩阵数学(我只是做了一点点,在上面),但+=运营商负责matrix[i][j]的价值,并增加了它matrix[i][j] * matrix[i][j]的值,我不“T认为是你想做的事。

好了,它看起来像它在做什么是不可能完成的行/列,然后将它添加到行/列。这就是你想要它做什么?如果没有,则改变它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top