Умножение как поворот и растяжение

Главная геометрическая идея курса: умножать на $z$ — значит поворачивать на угол $\arg z$ и растягивать в $|z|$ раз.

Умножение на $re^{i\varphi}$ — это поворот точки на угол $\varphi$ и растяжение в $r$ раз.

Откуда следует

В показательной форме всё очевидно. Пусть точка $w=\rho e^{i\theta}$. Умножим её на $z=re^{i\varphi}$:

$$z\cdot w=r\rho\,e^{i(\varphi+\theta)}.$$

Новый модуль $r\rho$ — старая длина $\rho$, умноженная на $r$ (растяжение). Новый угол $\varphi+\theta$ — старый угол $\theta$, повёрнутый на $\varphi$. Значит, умножение — это композиция поворота и масштабирования.

Умножение на i — поворот на 90°

Особенно красив случай $z=i$. У него модуль $1$ (растяжения нет) и аргумент $90^\circ$. Значит, умножение на $i$ — это поворот на $90^\circ$ против часовой стрелки. Проверим, поворачивая точку $3+0i$ несколько раз:

w = 3 + 0j
for k in range(5):
    print(f"i^{k} * 3 =", w)
    w = w * 1j

Вывод:

i^0 * 3 = (3+0j)
i^1 * 3 = 3j
i^2 * 3 = (-3+0j)
i^3 * 3 = (-0-3j)
i^4 * 3 = (3-0j)

Точка $3$ за четыре умножения на $i$ обошла окружность: вправо → вверх → влево → вниз → снова вправо. Каждое умножение — поворот на $90^\circ$.

Поворот на произвольный угол

Чтобы повернуть точку на угол $\alpha$ без растяжения, умножаем на $e^{i\alpha}$ (модуль $1$). Повернём $1+0i$ на $60^\circ$:

import cmath, math
tochka = 1 + 0j
povorot = cmath.exp(1j * math.radians(60))
rez = tochka * povorot
print("После поворота:", complex(round(rez.real, 4), round(rez.imag, 4)))
print("Новый угол(град):", round(math.degrees(cmath.phase(rez)), 2))

Вывод:

После поворота: (0.5+0.866j)
Новый угол(град): 60.0

Как работает под капотом

Именно поэтому комплексные числа любят в 2D-графике и робототехнике: поворот точки описывается одним умножением, без матриц. Множество поворотов плоскости в точности соответствует множеству комплексных чисел с модулем $1$ (единичной окружности). А композиция поворотов — это просто произведение соответствующих чисел.

Частые ошибки

  • Думать, что умножение на $i$ что-то растягивает. У $i$ модуль $1$, растяжения нет — только поворот.
  • Поворачивать по часовой стрелке. Умножение на $e^{i\alpha}$ с положительным $\alpha$ крутит против часовой стрелки.
  • Использовать число с модулем $\ne1$ там, где нужен чистый поворот: тогда вместе с поворотом точка изменит длину.

Итог

  • Умножение на $re^{i\varphi}$ = поворот на $\varphi$ и растяжение в $r$ раз.
  • Умножение на $i$ — поворот на $90^\circ$ против часовой стрелки.
  • Чистый поворот на угол $\alpha$ — умножение на $e^{i\alpha}$ (модуль $1$).
Проверьте себя
1. Что делает с точкой умножение на $i$?
AРастягивает в 2 раза
BПоворачивает на $90^\circ$ против часовой стрелки
CОтражает относительно вещественной оси
DСдвигает на единицу вправо
2. На что нужно умножить точку, чтобы повернуть её на угол $\alpha$ без изменения длины?
Aна $\alpha$
Bна $e^{i\alpha}$
Cна $r e^{i\alpha}$ с $r=2$
Dна $i\alpha$