Размерность и проверка размерностей
Урок о том, как анализ размерностей ловит ошибки в формулах ещё до подстановки чисел.
Размерность величины — это выражение её через основные размерности (длина 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 и сами относительные погрешности безразмерны.