Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的矩阵乘法,奇怪的结果_R_Matrix Multiplication - Fatal编程技术网

R中的矩阵乘法,奇怪的结果

R中的矩阵乘法,奇怪的结果,r,matrix-multiplication,R,Matrix Multiplication,在检查一些矩阵乘法运算时,我遇到了一个奇怪的行为。当我“手动”执行乘法(使用乘积和和)和使用矩阵乘法运算符%*%时,我得到了不同的结果 c <- 1:10 a <- 100^(0:9) p1 <- sum(a*c) p2 <- a%*%c p1==p2 [,1] [1,] FALSE p1-p2 [,1] [1,] -2048 c%*%计算结果的方式略有不同,这意味着不同位置会出现不同的舍入误差,从而导致不同的总体结果 我只是猜测,但我相信这可能

在检查一些矩阵乘法运算时,我遇到了一个奇怪的行为。当我“手动”执行乘法(使用乘积和和)和使用矩阵乘法运算符%*%时,我得到了不同的结果

c <- 1:10
a <- 100^(0:9)
p1 <- sum(a*c)
p2 <- a%*%c
p1==p2
      [,1]
[1,] FALSE
p1-p2
      [,1]
[1,] -2048

c
%*%
计算结果的方式略有不同,这意味着不同位置会出现不同的舍入误差,从而导致不同的总体结果


我只是猜测,但我相信这可能是由于
sum
将其累加器保存在一个机器浮点寄存器中,这在英特尔体系结构上是很常见的。如果您想确定,您必须查看R的装配代码。

请参阅。使用
all.equal
测试相等性。虽然这是R-FAQ中的一个问题,因为它实际上是一个“新手计算机数学”FAQ,但是否有什么地方可以让我们放置答案?“任何其他值”都不一定可以。尝试
f如果您要走这条路线,您可以将数据转换为
mpfr
类(请参阅
Rmpfr
包)。
c <- 1:10
a <- 101^(0:9)
p1 <- sum(a*c)
p2 <- a%*%c
p1==p2
      [,1]
[1,] TRUE
p1-p2
      [,1]
[1,] 0