все Python 3cmathфункция
cmath.sqrt()
степени и логарифмы
Квадратный корень для комплексных чисел: в отличие от math.sqrt, корень из отрицательного числа не падает, а даёт мнимое число.
Синтаксис
cmath.sqrt(z)
math.sqrt(-1) бросает ValueError, а cmath.sqrt(-1) возвращает 1j. Цена — результат всегда complex, даже для 4: получится (2+0j), а не 2.0, и такое число нельзя сравнивать через < или передать в range. Нужен вещественный корень — берите math.sqrt; комплексный ответ — только там, где он действительно ожидается (корни квадратного уравнения с отрицательным дискриминантом). Знак нуля в мнимой части выбирает ветвь: sqrt(complex(-4, -0.0)) даёт -2j.
Примеры
import cmath
import math
print(cmath.sqrt(-1)) # → 1j
print(cmath.sqrt(4)) # → (2+0j) — всегда complex
try:
math.sqrt(-1)
except ValueError as e:
print(type(e).__name__) # → ValueError
import cmath
a, b, c = 1, 2, 5
d = cmath.sqrt(b * b - 4 * a * c)
print((-b + d) / (2 * a), (-b - d) / (2 * a)) # → (-1+2j) (-1-2j)
import cmath
print(cmath.sqrt(complex(-4, 0.0)), cmath.sqrt(complex(-4, -0.0))) # → 2j -2j
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности