抱歉,如果这是一个微不足道的问题。如果是这样的话,我想我会受益于有人解释我缺乏理解的地方。
我在解释 N. Sloane 网站上列出的(假定为最佳)球形代码时遇到了一些麻烦。
例如,对于 40 点,最知名的球面代码在维度 5 中的第一个坐标在此处列出为
7.071067811865475700e-01
7.071067811865475700e-01
-2.531063763564293100e-21
2.856464746130754600e-21
8.243943086078260200e-21
这应该位于 5 维单位超球面上,所以它的范数应该是 1。
如果我用以下方法测试numpy:
a = np.array([7.071067811865475700e-01,
7.071067811865475700e-01,
-2.531063763564293100e-21,
2.856464746130754600e-21,
8.243943086078260200e-21])
我明白了
np.linalg.norm(a) == 1.0
输出True,这看起来不错。但后来我发现
np.linalg(a[0:2]) == 1.0
也输出True。所以看起来其他数字对于 来说太小了numpy。
我玩过例如 using dtype=np.longdouble,但这似乎使问题变得更糟,因为标准随后被计算为1.0000000000000000683。
我认为问题只是我们正在处理有限精度算术,所以我们不能指望得到“准确”的算术。如果是这样,可以使用什么计算方法来确认链接配置实际上是一个好的球形代码?或者,我想指出(或概述!)用于生成这些球形代码的算法也可能会消除我的困惑 - 它们似乎没有在网站上列出。
编辑:我打算删除这个问题,因为它不够好,但网站政策不鼓励删除已收到赞成答案的问题,所以我将它留在这里。可以在此处查看一个新的、希望表述得更好的问题。