【发布时间】:2021-11-11 01:01:42
【问题描述】:
给定顺序
1/1, 1/2, 1/3, ... , 1/n
如果我使用 1/i 和 1/i+1,我如何计算在什么时候我将无法以精确度 E 区分两个连续元素numpy.float16 ?即“我”是什么?
其他 np-floats 呢?
最小的 E 是多少?以及如何计算它的'i'?
例如,如果 E = 0.01,我可以区分 1/9 和 1/10,但不能区分 1/10 和 1/11,因为:
1/9 = 0.111
1/10 = 0.100
1/11 = 0.091
0.111 - 0.100 = 0.01 >= E
0.100 - 0.091 = 0.009 < E
i = 10
以更抽象的方式,给定 f(i) 在 np.floatXX 中可表示的最大“i”是多少?
有趣的是,实践中的精度比计算的要差: /逻辑中断的地方/
for i in range(int(1e3),int(12e6)) :
if not np.floatXX(1/i) > np.floatXX(1/(i+1)) :
print(i); break
float32: 11864338
float16: 1464
【问题讨论】:
-
不得不发布第二个答案,因为我终于明白了你问题的确切意义。它可以从我最初写的内容中推导出来,但绝对不是微不足道的。
标签: python numpy types precision floating-accuracy