Hay muchas funciones complejas de varios valores - funciones que pueden tener más de un valor correspondiente a cualquier punto de su dominio. Por ejemplo: raíces, logaritmos, funciones trigonométricas inversas ...
La razón por la cual estas funciones pueden tener valores múltiples es generalmente porque son las inversas de una función que tiene múltiples valores en el mapa de dominio con el mismo valor.
Al hacer cálculos con tales funciones, sería poco práctico devolver siempre todos los valores posibles. Para las funciones trigonométricas inversas, hay infinitos valores posibles.
Normalmente, los diferentes valores de función se pueden expresar como una función de un parámetro entero k. Por ejemplo, los valores de log z
con z = r*(cos t + i*sin t
son log r + i*(t + k*2*pi)
con k cualquier número entero. Para la enésima raíz, es r**(1/n)*exp(i*(t+k*2*pi)/n
con k=0..n-1
inclusive.
Como devolver todos los valores posibles no es práctico, las funciones matemáticas en Python y casi todos los demás lenguajes de programación comunes devuelven lo que se denomina el "valor principal" de la función. (reference) El valor principal suele ser el valor de la función con k = 0. Cualquiera que sea la elección, debe indicarse claramente en la documentación.
Así que para todas las raíces complejas de un número complejo, que acaba de calcular la función para todos los valores relevantes de k:
def roots(z, n):
nthRootOfr = abs(z)**(1.0/n)
t = phase(z)
return map(lambda k: nthRootOfr*exp((t+2*k*pi)*1j/n), range(n))
(Tendrá que importar el módulo cmath para hacer este trabajo.) Esto da:
>>> roots(-27j,3)
[(2.59808-1.5j), (1.83691e-16+3j), (-2.59808-1.5j)]
relacionada: [Cómo calcular la raíz enésima de un gran número entero en Python] (http://stackoverflow.com/questions/356090/how-to-compute-the-nth- root-of-a-very-big-integer-in-python) [no es un engaño porque en esta pregunta el OP no quiere números enteros, sino cualquier número] – amit
En realidad, cero también tiene raíces n. Son todas iguales :) –
@amit: esta es absolutamente otra pregunta, la palabra clave es "todas las raíces" – psihodelia