【问题标题】:Why element-wise matrix multiplication giving different output for same numbers in R?为什么逐元素矩阵乘法会为 R 中的相同数字提供不同的输出?
【发布时间】:2021-10-04 12:05:36
【问题描述】:

考虑以下矩阵 A 和 B。

> A
          [,1]     [,2]     [,3]
 [1,] 76.66894 76.46920 76.38535
 [2,] 76.66894 76.48072 76.40349
 [3,] 76.66894 76.56698 77.22777
 [4,] 76.66894 76.46920 76.38535
 [5,] 76.66894 76.48072 76.40349
 [6,] 76.66894 76.56698 77.22777
 [7,] 76.66894 76.46920 76.38535
 [8,] 76.66894 76.48072 76.40349
 [9,] 76.66894 76.56698 77.22777

> B
           [,1]      [,2]      [,3]
 [1,] 0.1111111 0.1111111 0.1111111
 [2,] 0.1111111 0.1111111 0.1111111
 [3,] 0.1111111 0.1111111 0.1111111
 [4,] 0.1111111 0.1111111 0.1111111
 [5,] 0.1111112 0.1111112 0.1111112
 [6,] 0.1111111 0.1111111 0.1111111
 [7,] 0.1111111 0.1111111 0.1111111
 [8,] 0.1111111 0.1111111 0.1111111
 [9,] 0.1111111 0.1111111 0.1111111

我想对 A 和 B 进行元素乘法,我希望在第一列中,除了第 5 列之外的所有结果都是相同的,因为它将乘以稍高的数字。但是,我得到以下结果:

C <- A*B
> C
          [,1]     [,2]     [,3]
 [1,] 8.518769 8.496576 8.487259
 [2,] 8.518772 8.497859 8.489277
 [3,] 8.518769 8.507440 8.580862
 [4,] 8.518772 8.496579 8.487262
 [5,] 8.518775 8.497861 8.489280
 [6,] 8.518772 8.507443 8.580865
 [7,] 8.518769 8.496576 8.487259
 [8,] 8.518772 8.497859 8.489277
 [9,] 8.518769 8.507440 8.580862

即使乘以相同的值,我得到的值也略有不同。为什么会这样?

【问题讨论】:

  • 你可以试试print(C, digits = 16)。原始值必须有更多差异,因为这些是浮点数

标签: r matrix matrix-multiplication


【解决方案1】:

这些是浮点数,因此必须有更高的精度,而不仅仅是打印的数字,这可能会作为乘法的差异相加,即

print(B[5,] - A[5, ], digits = 16)

会有所不同

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-08
    • 2014-11-13
    • 2018-12-20
    • 1970-01-01
    • 2016-06-04
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多