Проблема, с которой вы и все, кто не может воспроизвести вашу проблему, заключается в том, что размер np.dtype('int')
различен на разных платформах.Если вы замените свои декларации x1
и x2
на:
x1 = np.arange(0, 2400, 1, dtype=np.dtype('float'))
x2 = np.arange(0, 2400, 1, dtype=np.int32)
, то вы сможете последовательно воспроизводить странный вывод независимо от платформы:
Первоначальная проблема вызвана тем фактом, что np.int32
слишком мал, чтобы иметь дело с некоторыми из очень больших чисел, которые вы вычисляете, и значения промежуточного вычисления переполняются.Таким образом, результат:
poly4(np.arange(2000, 2010, dtype=np.int32), 0.03, -0.68, 5.6, -22, 1351)
# array([4.60917546e+08, 3.82703937e+08, 4.34772636e+08, 3.59427040e+08,
4.14366625e+08, 3.41894792e+08, 3.99711018e+08, 3.30118704e+08,
3.90817330e+08, 3.24110298e+08])
сильно отличается от результата:
poly4(np.arange(2000, 2010, dtype=np.int64), 0.03, -0.68, 5.6, -22, 1351)
# array([4.74582357e+11, 4.75534936e+11, 4.76488948e+11, 4.77444394e+11,
4.78401277e+11, 4.79359597e+11, 4.80319357e+11, 4.81280557e+11,
4.82243198e+11, 4.83207283e+11])