Rimush
@Rimush

Почему получение квадрата из 3 возвращает комплексно число?

x = -2
y = (x + 1) ** (1 / 3)

возвращает (0.5000000000000001+0.8660254037844386j)

Почему так получается и как получить обычное число?
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Потому что когда python видит отрицательное число в нецелой степени, он сразу включает комплексную математику. А в комплексной математике z^x считается как e^(x ln z). И получается:

>>> cmath.exp(1/3*cmath.log(-1))
(0.5000000000000001+0.8660254037844386j)


Решение: вынести минус, тогда будет использована вещественная математика:

>>> -(1**(1/3))
-1.0
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
SoreMix
@SoreMix Куратор тега Python
yellow
Потому что корень из отрицательного числа - комплексное число
У вас получился корень третий степени от минус одного
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы