я нашел следующий ответ здесь на Stackoverflow:Как рассчитать Python флоат-номер-й корень числа флоат
https://stackoverflow.com/a/356187/1829329
Но это работает только для целых чисел, как п в п-й корень:
import gmpy2 as gmpy
result = gmpy.root((1/0.213), 31.5).real
print('result:', result)
результаты в:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-eb4628226deb> in <module>()
8
----> 9 result = gmpy.root((1/0.213), 31.5).real
10
11 print('result:', result)
TypeError: root() requires 'mpfr','int' arguments
Что такое хороший и точный способ Calculat e такой корень? (Это питон кодовое представление некоторого формуляра, который мне нужно использовать для расчета в лекции.)
EDIT # 1
Вот мое решение, основанное на ответ Spektre
«s и информации люди старше here at http://math.stackexchange.com.
import numpy as np
def naive_root(nth, a, datatype=np.float128):
"""This function can only calculate the nth root, if the operand a is positive."""
logarithm = np.log2(a, dtype=datatype)
exponent = np.multiply(np.divide(1, nth, dtype=datatype), logarithm, dtype=datatype)
result = np.exp2(exponent, dtype=datatype)
return result
def nth_root(nth, a, datatype=np.float128):
if a == 0:
print('operand is zero')
return 0
elif a > 0:
print('a > 0')
return naive_root(nth, a, datatype=datatype)
elif a < 0:
if a % 2 == 1:
print('a is odd')
return -naive_root(nth, np.abs(a))
else:
print('a is even')
return naive_root(nth, np.abs(a))
Когда a меньше 0 и вы берете нецелый корень, результатом является комплексное число. Функция 'nth_root' не делает этого. Я думаю, вы сделали его более сложным, чем нужно. – casevh