Я ищу способ точно вычислить корни отрицательных чисел в Python. Я считаю, что неточностей я вижу, связаны с плавающей точкой, но мне кажется, что там должен быть способ, чтобы получить правильный ответ на что-то так просто, как это:Точные корни отрицательных чисел в Python
>>(-1+0j)**0.1
(0.9510565162951535+0.3090169943749474j)
Ответ Я ожидаю в этот случай (0+1j)
. Хотя повышение ответа Питона на десятое приближается к -1, я ищу ответ, полученный из более точного метода, то есть тот, который при поднятии до десятого равно ровно -1, а не число, действительно близкое к -1.
Есть ли способ сделать это правильно с помощью собственной библиотеки Python или sympy/numpy/scipy и т. Д.?
Существует не такая вещь, как * * -ый корень из комплексного числа. Python дал вам * * десятый корень, вплоть до пределов представления с плавающей запятой. Как вы хотите указать, какой корень вы хотите получить? – user2357112
Стоит отметить, что '0,1' невозможно точно представить в плавающей точке. Попробуйте 'sum (0,1 для _ в диапазоне (8))' для примера ошибок округления, к которым это может привести. – Blckknght
@ user2357112 Было бы неплохо получить все из них, и было бы идеально, если бы я не мог иметь дело с плавающей точкой. Вот почему я упоминаю sympy - я бы предпочел получить символические ответы в терминах целых чисел и i, чем с плавающей запятой. – Marty