Numpy с алгебраическими уравнениями с областями, включающими отрицательные

#python #python-3.x #numpy

Вопрос:

В общем, я хочу построить алгебраические уравнения с использованием NumPy с отрицательными и положительными значениями в области. Особый случай x ** (1/3) , и это хорошо известно, numpy.cbrt(x) будет обрабатывать отрицательные значения x и давать действительные числа. Чтобы пойти дальше, мне нужны правильные действительные числа для x ** (1/5), x ** (2/5), x ** (3/5), и т. Д. Например,

 x  = np.arange(-8, 8, 1)
xc = x.astype(np.complex128)
 

Я могу использовать xc для диапазона и возвращать комплексные числа. Абс для комплексных чисел дает правильную величину для действительных чисел, однако это неверный знак даже для кратных 1/5. Я не хочу проверять даже кратные числа. Существует ли общий метод определения правильного знака? Я использую Python 3.9.2 и NumPy 1.21.2.