R中带逆的矩阵乘法';t给出单位矩阵

R中带逆的矩阵乘法';t给出单位矩阵,r,R,我使用%*%对矩阵及其逆矩阵进行乘法运算。我不知道身份矩阵。我错过了什么 D [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 2 1 [3,] 2 2 0 solve(D) [,1] [,2] [,3] [1,] -0.1428571 0.4285714 -0.2857143 [2,] 0.1428571 -0.4285714 0.7857143 [3,] 0.2857143 0.1428571 -0.4285714

我使用%*%对矩阵及其逆矩阵进行乘法运算。我不知道身份矩阵。我错过了什么

D 

    [,1] [,2] [,3]
[1,] 1 2 3

[2,] 4 2 1

[3,] 2 2 0

solve(D)

       [,1]       [,2]       [,3]
[1,] -0.1428571 0.4285714 -0.2857143

[2,] 0.1428571 -0.4285714 0.7857143

[3,] 0.2857143 0.1428571 -0.4285714

D %*% solve(D)

          [,1]          [,2]          [,3]
[1,] 1.000000e+00 0.000000e+00 -2.220446e-16

[2,] -5.551115e-17 1.000000e+00 0.000000e+00

[3,] -1.110223e-16 -1.110223e-16 1.000000e+00

由于浮点精度错误,偏离对角线的值不能精确返回零

如果您四舍五入,您可以看到这实际上是身份矩阵:

round(D %*% solve(D))

由于浮点精度错误,偏离对角线的值不能精确返回零

如果您四舍五入,您可以看到这实际上是身份矩阵:

round(D %*% solve(D))

正如弗兰克提到的,这是精度误差。通常情况下,e-16 ish数字和更小的数字是发生这种情况的良好指标。也考虑

> 10/3-3-1/3
[1] 1.665335e-16
很明显,我们认为这是0。< /P>
除了埃文斯的答案外,这个问题的答案还有关于任何语言的更多细节

正如弗兰克提到的,这是精度误差。通常情况下,e-16 ish数字和更小的数字是发生这种情况的良好指标。也考虑

> 10/3-3-1/3
[1] 1.665335e-16
很明显,我们认为这是0。< /P>
除了埃文斯的答案外,这个问题的答案还有关于任何语言的更多细节

如果你斜视的话,这就是身份矩阵
all.equal(diag(3),D%*%solve(D))#TRUE
不太明显,但这是一个例子。如果你眯着眼睛,那就是恒等矩阵
all.equal(diag(3),D%*%solve(D))#TRUE
不太明显,但这是一个示例。