Сила как вектор. Проекции на оси

Сила — векторная величина: чтобы задать её, мало одного числа, нужны модуль и направление.

Сила — мера механического взаимодействия тел, характеризуемая модулем, направлением (линией действия) и точкой приложения.

В теоретической механике почти всё начинается с силы. Но сила — это не просто «сколько ньютонов»: одна и та же по модулю сила, приложенная под разными углами, даёт совершенно разный эффект. Поэтому силу описывают вектором $\vec F$. У вектора есть модуль $F = |\vec F|$ (в ньютонах, Н), направление и точка приложения. В статике твёрдого тела силу можно переносить вдоль её линии действия — это скользящий вектор.

Проекции силы на оси

Работать с векторами напрямую неудобно — гораздо проще разложить силу на составляющие вдоль осей координат. Если сила $\vec F$ лежит в плоскости и образует угол $\alpha$ с осью $Ox$, то её проекции равны:

$$F_x = F\cos\alpha, \qquad F_y = F\sin\alpha.$$

Проекция — это скалярная величина со знаком: если составляющая направлена в сторону положительной полуоси, проекция положительна, иначе отрицательна. Обратно, зная проекции, восстанавливаем модуль и направление:

$$F = \sqrt{F_x^2 + F_y^2}, \qquad \tan\alpha = \frac{F_y}{F_x}.$$

Посчитаем проекции силы $F = 100$ Н, приложенной под углом $30^\circ$ к горизонту, и проверим обратное восстановление модуля.

import math

F = 100.0          # модуль силы, Н
alpha = math.radians(30)

Fx = F * math.cos(alpha)
Fy = F * math.sin(alpha)

# обратное восстановление
F_back = math.hypot(Fx, Fy)
angle_back = math.degrees(math.atan2(Fy, Fx))

print(f"Fx = {Fx:.3f} Н")
print(f"Fy = {Fy:.3f} Н")
print(f"|F| восстановленный = {F_back:.3f} Н")
print(f"угол восстановленный = {angle_back:.1f} град")

Вывод:

Fx = 86.603 Н
Fy = 50.000 Н
|F| восстановленный = 100.000 Н
угол восстановленный = 30.0 град

Зачем вообще раскладывать силу

Может показаться, что проекции — лишняя формальность: ведь сила и так задана модулем и углом. Но представьте узел конструкции, к которому подходят пять тросов под разными углами. Складывать их «по правилу параллелограмма» попарно — это пять построений, каждое со своей тригонометрией и накоплением ошибок. А если разложить каждую силу на $F_x$ и $F_y$, то всё взаимодействие сводится к сложению двух столбиков чисел. Именно поэтому вся практическая статика — от расчёта моста до анализа сил в плече робота — построена на проекциях. Угол и модуль удобны человеку, проекции удобны вычислению; инженер постоянно переводит одно в другое. Это первый и самый важный навык курса: видеть за стрелкой вектора пару чисел и обратно.

Три измерения

В пространстве сила задаётся тремя проекциями $F_x, F_y, F_z$, а её модуль — $F = \sqrt{F_x^2 + F_y^2 + F_z^2}$. Направление удобно описывать направляющими косинусами $\cos\alpha = F_x/F$, $\cos\beta = F_y/F$, $\cos\gamma = F_z/F$, для которых всегда выполняется $\cos^2\alpha + \cos^2\beta + \cos^2\gamma = 1$. Это тождество — не случайность, а теорема Пифагора в пространстве: сумма квадратов проекций единичного вектора направления равна единице. На практике направляющие косинусы удобны тем, что сразу дают вклад силы в каждое из трёх уравнений равновесия, без повторного вычисления углов.

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

Почему проекция — это именно $F\cos\alpha$? Проекция вектора на ось — это скалярное произведение вектора на единичный вектор оси: $F_x = \vec F \cdot \vec e_x = |\vec F|\,|\vec e_x|\cos\alpha = F\cos\alpha$, потому что $|\vec e_x| = 1$. Именно поэтому знак проекции автоматически учитывает направление: если $\alpha \gt 90^\circ$, косинус отрицателен. В коде функция math.atan2(Fy, Fx) важнее наивного atan(Fy/Fx): она различает все четыре четверти и не делит на ноль при $F_x = 0$. А math.hypot устойчиво считает $\sqrt{F_x^2+F_y^2}$ без переполнения при больших числах.

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

  • Путать синус и косинус: на ось $Ox$ проецируется косинус угла, отсчитанного от этой же оси. Если угол задан от $Oy$, всё меняется местами.
  • Терять знак проекции. Проекция — скаляр со знаком, а не модуль составляющей.
  • Считать в градусах там, где math ждёт радианы. Всегда переводите через math.radians.
  • Складывать модули сил арифметически. Складываются векторы (то есть проекции), а не модули.

Итог

  • Сила — скользящий вектор: модуль, направление, линия действия.
  • Проекции на оси: $F_x = F\cos\alpha$, $F_y = F\sin\alpha$ — скаляры со знаком.
  • Модуль восстанавливается как $\sqrt{F_x^2+F_y^2}$, направление — через atan2.
  • В пространстве сила задаётся тремя проекциями и направляющими косинусами.
Проверьте себя
1. Сила 50 Н направлена под углом 60° к оси Ox. Чему равна её проекция на ось Ox?
A25 Н
B43,3 Н
C50 Н
D86,6 Н
2. Почему в коде используют math.atan2(Fy, Fx), а не math.atan(Fy/Fx)?
Aatan2 работает быстрее
Batan2 различает все четыре четверти и не делит на ноль при Fx=0
Catan2 сразу возвращает градусы
DМежду ними нет разницы
3. Что такое проекция силы на ось?
AВсегда положительное число — длина составляющей
BСкалярная величина со знаком, зависящим от направления
CВектор, перпендикулярный оси
DМодуль силы, делённый на угол