Числа, которых «не существует»
Почему математикам пришлось придумать число, квадрат которого равен $-1$, и зачем это инженерам.
Комплексное число — выражение вида $a+bi$, где $a$ и $b$ вещественные, а $i$ — мнимая единица с правилом $i^2=-1$.
С чего всё началось
Возьмём школьное уравнение $x^2+1=0$. На вещественной прямой решений нет: любой квадрат неотрицателен, поэтому $x^2$ не может равняться $-1$. Долгое время математики так и писали: «корней нет». Но в XVI веке при решении кубических уравнений возникла странная ситуация — промежуточные формулы содержали квадратные корни из отрицательных чисел, а окончательный ответ при этом получался обычным, вещественным. Чтобы дойти до правильного ответа, приходилось временно «поверить» в число, квадрат которого равен $-1$.
Это число назвали мнимой единицей и обозначили $i$. По определению:
$$i^2=-1.$$
Слово «мнимая» (imaginary) прижилось как исторический курьёз и многих сбивает с толку. На самом деле $i$ ничуть не «более выдумано», чем отрицательные числа или ноль — это просто новый объект с чётким правилом обращения.
Что такое комплексное число
Если разрешить умножать $i$ на вещественные числа и складывать результат с обычными числами, получаются комплексные числа:
$$z=a+bi,\qquad a,b\in\mathbb{R}.$$
Здесь $a$ называют вещественной частью и пишут $\operatorname{Re}(z)=a$, а $b$ — мнимой частью, $\operatorname{Im}(z)=b$. Обратите внимание: мнимая часть — это вещественное число $b$, а не $bi$.
В Python комплексные числа встроены в язык. Мнимую единицу обозначают буквой j (так принято в электротехнике, чтобы не путать с током $i$):
z = 2 + 3j
print("z =", z)
print("Re =", z.real)
print("Im =", z.imag)
print("i*i =", 1j * 1j)Вывод:
z = (2+3j) Re = 2.0 Im = 3.0 i*i = (-1+0j)
Последняя строка — самое важное: 1j * 1j действительно даёт $-1$. Правило $i^2=-1$ зашито в язык, а не в нашу веру.
Как работает под капотом
Можно строго определить комплексное число как пару вещественных чисел $(a,b)$ с особыми правилами сложения и умножения. Сложение покоординатное, а умножение задано так, чтобы пара $(0,1)$ при возведении в квадрат давала $(-1,0)$. Тогда никакой «мистики» нет: $i$ — это просто удобное имя для пары $(0,1)$, и $i^2=-1$ — следствие правил, а не магия. Компьютер хранит комплексное число ровно так: два числа с плавающей точкой, реальная и мнимая компоненты, рядом в памяти.
Частые ошибки
- Считать, что $\sqrt{-1}$ «не определено». В комплексных числах оно определено и равно $i$ (точнее, у $-1$ два квадратных корня $\pm i$).
- Путать мнимую часть $\operatorname{Im}(z)=b$ с самим слагаемым $bi$. Мнимая часть — вещественное число.
- Думать, что мнимые числа «не нужны на практике». Весь расчёт цепей переменного тока, обработка сигналов и квантовая механика держатся на них.
Итог
- Мнимая единица определена правилом $i^2=-1$ и закрывает «дыру» в решении уравнений.
- Комплексное число $z=a+bi$ состоит из вещественной части $a$ и мнимой части $b$.
- В Python мнимая единица — это
1j, а $i^2=-1$ выполняется буквально.