r中矩阵z由z=x+h规则生成,但z-x-h与-x-h+z的结果不一致,但z-(x+h)与-x-h+z的结果一致,这是为什么呢?z-x-h结果不是非零阵。

float型数 的问题。不止R有这个问题,大部分计算机语言里直接比较非整型数字都需要小心, 参考 http://www.cookbook-r.com/Numbers/Comparing_floating_point_numbers/

最简单的例子是

 0.3 == 3*.1
[1] FALSE

你的例子里z-x-h产生了极小的数字

set.seed(42)

x=matrix(data=rnorm(4),nrow = 2,ncol = 2)
h=matrix(data=rnorm(4),nrow = 2,ncol = 2)

z=x+h


z-x-h
#>               [,1]         [,2]
#> [1,] -1.110223e-16 0.000000e+00
#> [2,]  4.163336e-17 2.775558e-17

z-(x+h)
#>      [,1] [,2]
#> [1,]    0    0
#> [2,]    0    0

-x-h+z
#>      [,1] [,2]
#> [1,]    0    0
#> [2,]    0    0

<sup>Created on 2023-09-20 with reprex v2.0.2</sup>