Получение точных результатов операций с плавающей запятой может быть сложным и сложным.Вы можете получить требуемый список, используя np.linspace
:
x = np.linspace(-np.pi, 0, num=51)
x = np.concatenate([x, np.linspace(x[-1] - x[-2], np.pi, num=50)])
print(x)
Вывод:
[-3.14159265 -3.0787608 -3.01592895 -2.95309709 -2.89026524 -2.82743339
-2.76460154 -2.70176968 -2.63893783 -2.57610598 -2.51327412 -2.45044227
-2.38761042 -2.32477856 -2.26194671 -2.19911486 -2.136283 -2.07345115
-2.0106193 -1.94778745 -1.88495559 -1.82212374 -1.75929189 -1.69646003
-1.63362818 -1.57079633 -1.50796447 -1.44513262 -1.38230077 -1.31946891
-1.25663706 -1.19380521 -1.13097336 -1.0681415 -1.00530965 -0.9424778
-0.87964594 -0.81681409 -0.75398224 -0.69115038 -0.62831853 -0.56548668
-0.50265482 -0.43982297 -0.37699112 -0.31415927 -0.25132741 -0.18849556
-0.12566371 -0.06283185 0. 0.06283185 0.12566371 0.18849556
0.25132741 0.31415927 0.37699112 0.43982297 0.50265482 0.56548668
0.62831853 0.69115038 0.75398224 0.81681409 0.87964594 0.9424778
1.00530965 1.0681415 1.13097336 1.19380521 1.25663706 1.31946891
1.38230077 1.44513262 1.50796447 1.57079633 1.63362818 1.69646003
1.75929189 1.82212374 1.88495559 1.94778745 2.0106193 2.07345115
2.136283 2.19911486 2.26194671 2.32477856 2.38761042 2.45044227
2.51327412 2.57610598 2.63893783 2.70176968 2.76460154 2.82743339
2.89026524 2.95309709 3.01592895 3.0787608 3.14159265]
Это сделано в два шага, чтобы избежать числовой ошибки, которая возникает, когда интервал между 0Если x
выполняется за один шаг как
x = np.linspace(-np.pi, np.pi, 101)
, тогда значение x[50]
равно 4.440892098500626e-16
, вместо x[50]
, равного 0
, как и ожидалось.