Кубический корень отрицательного числа на питоне - PullRequest
15 голосов
/ 01 сентября 2009

Может кто-нибудь помочь мне найти решение о том, как вычислить кубический корень отрицательного числа с помощью python?

>>> math.pow(-3, float(1)/3)
nan

это не работает. Кубический корень отрицательного числа является отрицательным числом. Любые решения?

Ответы [ 13 ]

0 голосов
/ 26 августа 2015

Для арифметического калькулятороподобного ответа в Python 3:

>>> -3.0**(1/3)
-1.4422495703074083

или -3.0**(1./3) в Python 2.

Для алгебраического решения x**3 + (0*x**2 + 0*x) + 3 = 0 используйте numpy:

>>> p = [1,0,0,3]
>>> numpy.roots(p)
[-3.0+0.j          1.5+2.59807621j  1.5-2.59807621j]
0 голосов
/ 08 мая 2015

У меня была очень похожая проблема, и я нашел решение NumPy из этого сообщения на форуме .

Одним словом, мы можем использовать методы NumPy sign и absolute, чтобы выручить нас. Вот пример, который работал для меня:

import numpy as np

x = np.array([-81,25])
print x
#>>> [-81  25]

xRoot5 = np.sign(x) * np.absolute(x)**(1.0/5.0)     
print xRoot5
#>>> [-2.40822469  1.90365394]

print xRoot5**5
#>>> [-81.  25.]

Итак, возвращаясь к исходной проблеме корня куба:

import numpy as np

y = -3.
np.sign(y) * np.absolute(y)**(1./3.)
#>>> -1.4422495703074083

Надеюсь, это поможет.

0 голосов
/ 01 сентября 2009

Примитивное решение:

def cubic_root(nr):
   if nr<0:
     return -math.pow(-nr, float(1)/3)
   else:
     return math.pow(nr, float(1)/3)

Вероятно, массово непитонический, но он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...