Векторное произведение a×b: площадь и нормаль

Векторное произведение строит новый вектор, перпендикулярный обоим исходным, длиной в площадь между ними.

Векторное произведение $\vec a \times \vec b$ — вектор, перпендикулярный плоскости $\vec a, \vec b$, длиной $|\vec a||\vec b|\sin\theta$, направленный по правилу правой руки.

Формула через детерминант

Удобнее всего запомнить векторное произведение как «детерминант» с ортами в первой строке:

$$\vec a \times \vec b = \begin{vmatrix} \vec e_x & \vec e_y & \vec e_z \\ a_x & a_y & a_z \\ b_x & b_y & b_z \end{vmatrix}$$

Раскрывая, получаем покомпонентно:

$$\vec a \times \vec b = (a_y b_z - a_z b_y,\; a_z b_x - a_x b_z,\; a_x b_y - a_y b_x)$$

Геометрия: площадь

Длина результата равна площади параллелограмма, натянутого на $\vec a$ и $\vec b$:

$$|\vec a \times \vec b| = |\vec a|\,|\vec b|\sin\theta = S_{\text{парал.}}$$

Площадь треугольника — половина этого. Заметьте контраст со скалярным произведением: там был $\cos$ (совпадение направлений), здесь $\sin$ (расхождение направлений).

Считаем на Python

import math

def cross(a, b):
    return (a[1]*b[2] - a[2]*b[1],
            a[2]*b[0] - a[0]*b[2],
            a[0]*b[1] - a[1]*b[0])

def norm(v):
    return math.sqrt(sum(c*c for c in v))

a = (1, 0, 0)
b = (0, 1, 0)
c = cross(a, b)
print("a x b =", c)
print("Площадь параллелограмма =", norm(c))

# Перпендикулярность проверим скалярными произведениями
print("(a x b)·a =", sum(x*y for x, y in zip(c, a)))
print("(a x b)·b =", sum(x*y for x, y in zip(c, b)))

Вывод:

a x b = (0, 0, 1)
Площадь параллелограмма = 1.0
(a x b)·a = 0
(a x b)·b = 0

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

Векторное произведение антикоммутативно: $\vec b \times \vec a = -(\vec a \times \vec b)$. Поэтому порядок важен — он задаёт, в какую из двух перпендикулярных сторон смотрит результат. Правило правой руки: пальцы загибаются от $\vec a$ к $\vec b$, большой палец показывает $\vec a \times \vec b$. Если $\vec a \parallel \vec b$, то $\sin\theta = 0$ и произведение нулевое — это признак коллинеарности.

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

  • Путать порядок: $\vec a \times \vec b \neq \vec b \times \vec a$, они противоположны.
  • Думать, что результат — число. Нет, это вектор (в отличие от скалярного произведения).
  • Применять в 2D буквально: в плоскости $\vec a \times \vec b$ сводится к одному числу $a_x b_y - a_y b_x$ (z-компонента).

Итог

  • $\vec a \times \vec b$ — вектор, перпендикулярный обоим, длиной в площадь параллелограмма.
  • Антикоммутативность: смена порядка меняет знак.
  • Нулевой результат означает параллельность векторов.
Проверьте себя
1. Чему равна длина вектора a×b?
A|a||b|cos θ
B|a||b|sin θ
C|a|+|b|
D|a|·|b|
2. Как связаны a×b и b×a?
AОни равны
BОни противоположны (отличаются знаком)
CОни перпендикулярны
DИх сумма равна нулевому вектору только если a=b
3. Если a×b = 0 при ненулевых a и b, то векторы…
Aперпендикулярны
Bпараллельны (коллинеарны)
Cобразуют угол 45°
Dимеют равную длину