EssayAI
Блог
Блог
Математика и алгоритмы

Угол между векторами: формула через скалярное произведение

11 июня 2026Время чтения: 9 минут
#угол между векторами#скалярное произведение#косинус угла#векторы#линейная алгебра

Угол между двумя ненулевыми векторами - одна из фундаментальных характеристик в линейной алгебре. Она нужна в физике (проекции сил), в геометрии (перпендикулярность прямых и плоскостей), в машинном обучении (косинусное сходство) и в сотнях задач курса линейной алгебры. Главный инструмент вычисления угла - скалярное произведение: оно связывает координаты векторов с углом между ними через единственную формулу. Ниже - калькулятор, в котором можно выставить направления и длины двух векторов и сразу увидеть угол, косинус и геометрическую картину. После него разберём все детали вывода.

Формула угла через скалярное произведение

Скалярное произведение двух векторов a\mathbf{a} и b\mathbf{b} определяется двумя способами - геометрически и через координаты, и оба дают одно и то же число. Геометрическое определение:

ab=abcosθ,\mathbf{a} \cdot \mathbf{b} = |\mathbf{a}|\,|\mathbf{b}|\cos\theta,

где θ[0°,180°]\theta \in [0°, 180°] - угол между векторами, a|\mathbf{a}| и b|\mathbf{b}| - их длины (модули). Отсюда немедленно следует формула угла:

cosθ=abab,θ=arccos ⁣(abab).\cos\theta = \frac{\mathbf{a} \cdot \mathbf{b}}{|\mathbf{a}|\,|\mathbf{b}|}, \qquad \theta = \arccos\!\left(\frac{\mathbf{a} \cdot \mathbf{b}}{|\mathbf{a}|\,|\mathbf{b}|}\right).

В координатах скалярное произведение в R2\mathbb{R}^2:

ab=axbx+ayby,\mathbf{a} \cdot \mathbf{b} = a_x b_x + a_y b_y,

в R3\mathbb{R}^3:

ab=axbx+ayby+azbz.\mathbf{a} \cdot \mathbf{b} = a_x b_x + a_y b_y + a_z b_z.

Длина (модуль) вектора a=(ax,ay)\mathbf{a} = (a_x, a_y):

a=ax2+ay2,|\mathbf{a}| = \sqrt{a_x^2 + a_y^2},

и аналогично для b\mathbf{b}. Таким образом, полная формула для угла в R2\mathbb{R}^2:

θ=arccos ⁣axbx+aybyax2+ay2bx2+by2.\theta = \arccos\!\frac{a_x b_x + a_y b_y}{\sqrt{a_x^2+a_y^2}\,\sqrt{b_x^2+b_y^2}}.

Два вектора из начала координат: угол между ними плавно меняется от 0 до 180 deg, дуга угла и значение cos theta обновляются синхронно - видно, как скалярное произведение меняет знак при переходе через 90 deg

Геометрический смысл и знак косинуса

Формула cosθ=ab/(ab)\cos\theta = \mathbf{a}\cdot\mathbf{b}/(|\mathbf{a}||\mathbf{b}|) позволяет сразу читать знак скалярного произведения как геометрическую информацию:

  • ab>0\mathbf{a} \cdot \mathbf{b} > 0 - острый угол (θ<90°\theta < 90°), векторы «смотрят» в одну полуплоскость;
  • ab=0\mathbf{a} \cdot \mathbf{b} = 0 - прямой угол (θ=90°\theta = 90°), векторы ортогональны;
  • ab<0\mathbf{a} \cdot \mathbf{b} < 0 - тупой угол (θ>90°\theta > 90°), векторы «смотрят» в противоположные полуплоскости.

Это условие ортогональности ab=0\mathbf{a} \cdot \mathbf{b} = 0 - рабочий способ проверить перпендикулярность двух прямых в задачах: достаточно перемножить координаты и сложить, не вычисляя углов вообще.

Угол θ\theta по определению лежит в отрезке [0°,180°][0°, 180°]: он всегда неотрицателен и не превышает развёрнутого угла. Это и есть область значений arccos\arccos. Если вам нужен ориентированный угол (со знаком, с учётом направления обхода), используют atan2\mathrm{atan2} - но это уже другая задача.

Пошаговое решение: пример в R2

Разберём задачу: найти угол между a=(3;4)\mathbf{a} = (3;\,4) и b=(1;2)\mathbf{b} = (1;\,-2).

Шаг 1. Скалярное произведение: ab=31+4(2)=38=5.\mathbf{a}\cdot\mathbf{b} = 3\cdot1 + 4\cdot(-2) = 3 - 8 = -5.

Шаг 2. Длины векторов: a=32+42=9+16=25=5,b=12+(2)2=1+4=5.|\mathbf{a}| = \sqrt{3^2+4^2} = \sqrt{9+16} = \sqrt{25} = 5, \quad |\mathbf{b}| = \sqrt{1^2+(-2)^2} = \sqrt{1+4} = \sqrt{5}.

Шаг 3. Косинус угла: cosθ=555=150,4472.\cos\theta = \frac{-5}{5\cdot\sqrt{5}} = \frac{-1}{\sqrt{5}} \approx -0{,}4472.

Шаг 4. Угол: θ=arccos(0,4472)116,6°.\theta = \arccos(-0{,}4472) \approx 116{,}6°.

Знак скалярного произведения отрицателен - угол тупой, что согласуется с геометрией.

Скалярное произведение как проекция: вектор b проецируется на вектор a, длина проекции умножается на длину a и даёт скалярное произведение. При тупом угле проекция отрицательна
Скалярное произведение как проекция: вектор b проецируется на вектор a, длина проекции умножается на длину a и даёт скалярное произведение. При тупом угле проекция отрицательна

Пример в R3

Дано a=(1;2;2)\mathbf{a} = (1;\,2;\,2) и b=(2;1;2)\mathbf{b} = (2;\,-1;\,2). Найти угол.

ab=12+2(1)+22=22+4=4.\mathbf{a}\cdot\mathbf{b} = 1\cdot2 + 2\cdot(-1) + 2\cdot2 = 2 - 2 + 4 = 4.

a=1+4+4=3,b=4+1+4=3.|\mathbf{a}| = \sqrt{1+4+4} = 3, \quad |\mathbf{b}| = \sqrt{4+1+4} = 3.

cosθ=433=490,444,θ63,6°.\cos\theta = \frac{4}{3\cdot3} = \frac{4}{9} \approx 0{,}444, \qquad \theta \approx 63{,}6°.

В трёхмерном случае всё то же самое - просто добавляется третье слагаемое в сумму и третий квадрат под корнем. Формула не меняется.

Нормированные векторы и косинусное сходство

Если вектор нормировать - разделить на свою длину, - получим единичный вектор a^=a/a\hat{\mathbf{a}} = \mathbf{a}/|\mathbf{a}|. Тогда:

a^b^=cosθ.\hat{\mathbf{a}} \cdot \hat{\mathbf{b}} = \cos\theta.

Скалярное произведение нормированных векторов равно косинусу угла между ними напрямую - никаких делений на длины. Именно этим пользуется косинусная мера сходства в информационном поиске и NLP: «похожесть» двух текстов (представленных как частотные векторы) измеряется косинусом угла между ними. При θ0°\theta \to 0° тексты идентичны по содержанию, при θ90°\theta \to 90° - не имеют общих ключевых слов.

Нормирование двух векторов: стрелки сжимаются до единичной длины и укладываются на единичную окружность, угол между ними остаётся неизменным - геометрический смысл нормирования

Проекция вектора и связь с углом

Скалярное произведение напрямую связано с проекцией: длина проекции b\mathbf{b} на направление a\mathbf{a} равна:

прab=bcosθ=aba.\mathrm{пр}_{\mathbf{a}}\mathbf{b} = |\mathbf{b}|\cos\theta = \frac{\mathbf{a}\cdot\mathbf{b}}{|\mathbf{a}|}.

Именно так находят физическую работу A=Fs=FscosθA = \mathbf{F}\cdot\mathbf{s} = |\mathbf{F}||\mathbf{s}|\cos\theta: она равна произведению модуля силы на длину пути и косинус угла между ними. При θ=90°\theta = 90° работа равна нулю: сила перпендикулярна перемещению. Это прямое следствие той же формулы угла.

Угол между векторами и вектор нормали к плоскости

В задачах стереометрии часто требуется найти угол между прямой и плоскостью или угол между двумя плоскостями. Для этого используют нормальные векторы. Нормальный вектор плоскости Ax+By+Cz=DAx + By + Cz = D равен n=(A;B;C)\mathbf{n} = (A;\,B;\,C).

  • Угол между двумя плоскостями с нормалями n1\mathbf{n}_1 и n2\mathbf{n}_2 равен углу между нормалями (или его дополнению до 180°180° - берут острый): cosϕ=n1n2n1n2.\cos\phi = \frac{|\mathbf{n}_1 \cdot \mathbf{n}_2|}{|\mathbf{n}_1|\,|\mathbf{n}_2|}.
  • Угол между прямой с направляющим вектором l\mathbf{l} и плоскостью с нормалью n\mathbf{n}: угол φ\varphi между прямой и плоскостью дополняет до 90°90° угол между l\mathbf{l} и n\mathbf{n}, поэтому sinφ=lnln.\sin\varphi = \frac{|\mathbf{l}\cdot\mathbf{n}|}{|\mathbf{l}|\,|\mathbf{n}|}.

В обоих случаях берётся модуль числителя, чтобы результат попадал в [0°,90°][0°, 90°], - угол между геометрическими объектами (в отличие от угла между направленными векторами) всегда неотрицателен и не превышает 90°90°.

Условие параллельности и ортогональности

Из формулы немедленно выводятся два важных условия:

Ортогональность (θ=90°\theta = 90°, cosθ=0\cos\theta = 0): ab    axbx+ayby=0.\mathbf{a} \perp \mathbf{b} \iff a_x b_x + a_y b_y = 0.

Коллинеарность (θ=0°\theta = 0° или 180°180°, cosθ=1|\cos\theta| = 1): модуль косинуса равен 1, что равносильно равенству нулю «векторного произведения» (в 2D - его скалярного аналога axbyaybx=0a_x b_y - a_y b_x = 0). Для проверки параллельности часто удобнее проверять пропорциональность координат: ax/bx=ay/bya_x/b_x = a_y/b_y (при ненулевых знаменателях).

Эти два условия - рабочий инструмент во множестве задач: от построения ортонормального базиса методом Грама-Шмидта до проверки ортогональности функций в задачах на ряды Фурье (там роль скалярного произведения играет интеграл от произведения функций).

Как применять формулу в матрицах: угол между строками

Когда данные организованы в матрицу (таблица объектов и признаков), каждая строка - это вектор признаков одного объекта. Угол между двумя строками - это мера «похожести» объектов в пространстве признаков. Алгоритм:

  1. Выбрать две строки: a=(a1,a2,,an)\mathbf{a} = (a_1, a_2, \ldots, a_n) и b=(b1,b2,,bn)\mathbf{b} = (b_1, b_2, \ldots, b_n).
  2. Посчитать скалярное произведение: ab=i=1naibi\mathbf{a}\cdot\mathbf{b} = \sum_{i=1}^n a_i b_i.
  3. Найти длины: a=ai2|\mathbf{a}| = \sqrt{\sum a_i^2}, b=bi2|\mathbf{b}| = \sqrt{\sum b_i^2}.
  4. Применить формулу косинуса и взять arccos\arccos.

Это работает в любом числе измерений: формула угла не меняется при переходе от R2\mathbb{R}^2 к R100\mathbb{R}^{100}. Именно поэтому метод так популярен в анализе данных - он масштабируется на произвольную размерность без каких-либо изменений.

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

  • Подстановка координат в неправильном порядке. Скалярное произведение axbx+aybya_x b_x + a_y b_y берётся компонент на компонент: первый с первым, второй со вторым. Смешивать нельзя.
  • Деление на произведение, а не на произведение длин. Делить нужно на ab|\mathbf{a}| \cdot |\mathbf{b}| - произведение двух корней, а не на ab|\mathbf{a} \cdot \mathbf{b}| (абсолютное значение числа).
  • Применение arccos к числу вне [-1, 1]. Если из-за ошибок округления получилось cosθ=1,0001\cos\theta = 1{,}0001 - arccos не определён. Всегда стоит зажать: cosθ=min(1,max(1,x))\cos\theta = \min(1,\,\max(-1,\,x)).
  • Путаница со знаком скалярного произведения. Отрицательный результат - это нормально; он просто означает тупой угол. Брать ab|\mathbf{a}\cdot\mathbf{b}| перед делением на ab|\mathbf{a}||\mathbf{b}| - грубая ошибка.
  • Забытый третий компонент в R3. Добавить (axbx+ayby)(a_x b_x + a_y b_y) вместо (axbx+ayby+azbz)(a_x b_x + a_y b_y + a_z b_z) и сократить ab|\mathbf{a}||\mathbf{b}| некорректно.

FAQ

Как найти угол между векторами, если задан только угол каждого с осью X? Если вектор a\mathbf{a} направлен под углом α\alpha к оси OxOx, а b\mathbf{b} - под углом β\beta, то угол между ними θ=αβ\theta = |\alpha - \beta| (при необходимости берём min(θ,360°θ)\min(\theta, 360° - \theta), чтобы попасть в [0°,180°][0°,180°]). Это частный случай формулы косинуса разности.

Можно ли найти угол между вектором и плоскостью через скалярное произведение? Да, через нормаль к плоскости. Если n\mathbf{n} - нормальный вектор плоскости, а a\mathbf{a} - вектор, то угол φ\varphi между a\mathbf{a} и плоскостью равен дополнению до прямого угла: φ=90°θ\varphi = 90° - \theta, где θ\theta - угол между a\mathbf{a} и n\mathbf{n}. Иначе: sinφ=cosθ=an/(an)\sin\varphi = |\cos\theta| = |\mathbf{a}\cdot\mathbf{n}|/(|\mathbf{a}||\mathbf{n}|).

Почему arccos возвращает угол в [0, 180], а не в [-180, 180]? Потому что угол между двумя векторами - это геометрическое расстояние, оно не может быть отрицательным. Для ориентированного угла (например, угол поворота от a\mathbf{a} к b\mathbf{b} против часовой стрелки) используют atan2(axbyaybx,  ab)\mathrm{atan2}(a_x b_y - a_y b_x,\; \mathbf{a}\cdot\mathbf{b}) в двумерном случае.

Коротко

Угол θ\theta между ненулевыми векторами a\mathbf{a} и b\mathbf{b} находится по формуле θ=arccos ⁣((ab)/(ab))\theta = \arccos\!\bigl((\mathbf{a}\cdot\mathbf{b})/(|\mathbf{a}||\mathbf{b}|)\bigr), где скалярное произведение ab=axbx+ayby\mathbf{a}\cdot\mathbf{b} = a_x b_x + a_y b_yR2\mathbb{R}^2) или с добавленным azbza_z b_z в R3\mathbb{R}^3. Знак скалярного произведения сразу говорит о характере угла: плюс - острый, ноль - прямой, минус - тупой. Нормированные векторы дают косинус напрямую, без деления на длины.

Доверьте текст нейросети EssayAI

Открыть EssayAI

Бесплатно, на русском языке и без VPN

Читайте также