Ho incontrato un comportamento confuso con radici quadrate di numeri complessi in python. L'esecuzione di questo codice:Radice quadrata di numeri complessi in python
from cmath import sqrt
a = 0.2
b = 0.2 + 0j
print(sqrt(a/(a - 1)))
print(sqrt(b/(b - 1)))
dà l'uscita
0.5j
-0.5j
Una cosa simile accade con
print(sqrt(-1 * b))
print(sqrt(-b))
Sembra queste coppie di affermazioni dovrebbe dare la stessa risposta?
Secondo [Wolfram] (https://www.wolframalpha.com/) Lei ha ragione. La prima coppia ([link] (https://www.wolframalpha.com/input/?i=sqrt (0.2 +% 2F + (0.2 + - + 1))) e [link] (https: //www.wolframalpha .com/input /? i = sqrt (+ (0.2% 2B0i) +% 2F + (+ (0.2% 2B0i) + - 1+)))) entrambi dovrebbero essere '0.5i', e la seconda coppia ([link] (https://www.wolframalpha.com/input/?i=sqrt(-1+*+(+.2+%2B+0i))) e [link] (https://www.wolframalpha.com/input/ ? i = sqrt (-1 + * + (0.2 +% 2B + 0i)))) dovrebbero entrambi essere '0.447214 ... i'. La fonte di 'cmath.sqrt()' è [qui] (https://hg.python.org/cpython/file/tip/Modules/cmathmodule.c#l732) ... – Jens
Entrambe le risposte sono corrette, la domanda è il motivo per cui restituisce diversi coniugati. – tzaman
FWIW il comportamento appare lo stesso in 2.7 e 3.5. – tzaman