Умножение как поворот и растяжение
Главная геометрическая идея курса: умножать на $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$).