Чтобы ваш код работал правильно, используйте больший тип данных i.e (dtype = "float64"), отредактируйте ваш код так:
x = np.array(x_range, dtype="float64")
или если вы хотите, чтобы 2 результата совпадали по точности, добавьте [0]
x = np.array(x_range, dtype="float64")[0]
x = np.array(x_range, dtype="float32")[0]
Чтобы понять почему, прочитайте ниже:
если вы измените формулу в своем коде, например, на простую (формула = "x + 100"), вы получите правильные результаты
что это значит?
это означает, что ваша формула '1 - ((2 32-1) / 2 32) ** (x * (x-1) / 2)' вызывает переполнение в numpy "numpy встроенный С не питоном "
я попробовал следующий код, чтобы сузить возможности проблемы:
formula = '1-((2**32-1)/2**32)**(x*(x-1)/2)'
x = 80300
print(eval(formula))
x = np.array(range(80300, 80301))[0]
print(eval(formula))
вывод из возвышенного текста >>>
0.5279390283223464
RuntimeWarning: overflow encountered in long_scalars
import numpy as np
-0.28319476138546906
которые поддерживают мою точку зрения