Размерность и проверка размерностей

Урок о том, как анализ размерностей ловит ошибки в формулах ещё до подстановки чисел.

Размерность величины — это выражение её через основные размерности (длина L, масса M, время T и т. д.), показывающее, как единица меняется при смене масштаба основных единиц.

Анализ размерностей — бесплатный детектор ошибок. Если левая и правая части формулы имеют разную размерность, формула заведомо неверна. Это первое, что проверяет опытный инженер, прежде чем подставлять числа.

Как обозначают размерность

Размерность скорости — длина, делённая на время:

$$\dim v = \mathsf{L} \cdot \mathsf{T}^{-1}$$

Размерность силы по $F = m a$:

$$\dim F = \mathsf{M} \cdot \mathsf{L} \cdot \mathsf{T}^{-2}$$

Размерность энергии $E = \tfrac{1}{2} m v^2$:

$$\dim E = \mathsf{M} \cdot (\mathsf{L}\,\mathsf{T}^{-1})^2 = \mathsf{M} \cdot \mathsf{L}^2 \cdot \mathsf{T}^{-2}$$

Зачем это нужно

Допустим, вы вспоминаете формулу периода маятника и колеблетесь между $T = 2\pi\sqrt{L/g}$ и $T = 2\pi\sqrt{g/L}$. Проверим размерность первого варианта. Размерность $g$ есть $\mathsf{L}\,\mathsf{T}^{-2}$, поэтому $L/g$ имеет размерность $\mathsf{T}^2$, а корень — $\mathsf{T}$. Получаем секунды — верно. Второй вариант дал бы $\mathsf{T}^{-1}$, то есть частоту, а не период. Размерность мгновенно отсеяла ошибку.

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

Представим размерность как вектор показателей степеней при основных размерностях. Длину запишем как $(1, 0, 0)$ для $(\mathsf{L}, \mathsf{M}, \mathsf{T})$, время — как $(0, 0, 1)$. Тогда умножению величин соответствует сложение векторов, делению — вычитание. Проверим размерность энергии.

# Размерности как (L, M, T)
L = (1, 0, 0)
M = (0, 1, 0)
T = (0, 0, 1)

def umnozhit(a, b):
    return tuple(x + y for x, y in zip(a, b))

def stepen(a, n):
    return tuple(x * n for x in a)

# Скорость v = L / T  ->  L * T^(-1)
v = umnozhit(L, stepen(T, -1))
# Энергия E = M * v^2
E = umnozhit(M, stepen(v, 2))
print("Размерность скорости (L,M,T):", v)
print("Размерность энергии  (L,M,T):", E)

Вывод:

Размерность скорости (L,M,T): (1, 0, -1)
Размерность энергии  (L,M,T): (2, 1, -2)

Энергия получила размерность $\mathsf{L}^2 \mathsf{M} \mathsf{T}^{-2}$ — ровно то, что мы вывели руками. Такой векторный приём легко автоматизировать в любом расчётном коде.

Безразмерные величины

Некоторые величины безразмерны: их размерность — пустой вектор $(0,0,0)$. Это, например, КПД, число Маха, отношение длин или относительная погрешность $\delta = \Delta/x$. Аргументы синуса, логарифма и экспоненты обязаны быть безразмерными — это ещё один способ ловить ошибки.

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

  • Складывать величины разной размерности — складывать можно только однородное (метры с метрами).
  • Подставлять в синус или логарифм размерную величину: аргумент трансцендентной функции обязан быть безразмерным.
  • Считать, что совпадение размерностей гарантирует правильность формулы — оно лишь не противоречит ей, но не доказывает безразмерный коэффициент.

Итог

  • Размерность выражает величину через основные (L, M, T, ...).
  • Проверка размерностей отсеивает неверные формулы до подстановки чисел.
  • Размерность удобно представить вектором показателей: умножение — сложение векторов.
  • Аргументы sin, log, exp и сами относительные погрешности безразмерны.
Проверьте себя
1. Какова размерность силы через основные L, M, T?
A$\mathsf{M}\mathsf{L}\mathsf{T}^{-1}$
B$\mathsf{M}\mathsf{L}\mathsf{T}^{-2}$
C$\mathsf{M}\mathsf{L}^2\mathsf{T}^{-2}$
D$\mathsf{L}\mathsf{T}^{-2}$
2. Что гарантирует совпадение размерностей левой и правой части формулы?
AФормула точно верна
BФормула не содержит безразмерных коэффициентов
CФормула не противоречит размерности, но может содержать неверный коэффициент
DПогрешность равна нулю