Общая формула переноса погрешности

Урок о главной формуле косвенных измерений: как погрешности измеренных величин складываются в погрешность результата.

Закон распространения погрешности связывает неопределённость функции $f(x_1, \ldots, x_k)$ с неопределённостями её аргументов через частные производные.

Косвенное измерение вычисляет величину по формуле из прямо измеренных. Но каждый вход известен лишь с погрешностью. Как эти погрешности перейдут в результат? Ответ даёт фундаментальная формула, лежащая в основе всей обработки косвенных измерений.

Основная формула

Для функции $f(x_1, x_2, \ldots, x_k)$ при независимых погрешностях аргументов:

$$\sigma_f^2 = \sum_{i=1}^{k}\left(\frac{\partial f}{\partial x_i}\right)^2 \sigma_{x_i}^2$$

Смысл прозрачен: частная производная $\partial f/\partial x_i$ — это коэффициент чувствительности, показывающий, насколько сильно результат реагирует на изменение $i$-го входа. Чем чувствительнее функция к величине, тем больше её погрешность влияет на итог. Складываются именно квадраты (дисперсии), потому что независимые случайные погрешности частично компенсируют друг друга, а не складываются «в худшую сторону».

Почему квадраты

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

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

Производные не обязательно брать аналитически — их можно оценить численно, сдвигая каждый вход на крошечную величину. Это универсальный приём: формулу распространения можно применить к любой функции. Посчитаем погрешность для $f = x \cdot y$.

def f(x, y):
    return x * y

x, y = 4.0, 5.0
sx, sy = 0.1, 0.2
h = 1e-6

# Численные частные производные
dfdx = (f(x + h, y) - f(x - h, y)) / (2 * h)
dfdy = (f(x, y + h) - f(x, y - h)) / (2 * h)

sigma_f = ((dfdx * sx) ** 2 + (dfdy * sy) ** 2) ** 0.5
print("∂f/∂x ≈", round(dfdx, 4), "(теория: y =", y, ")")
print("∂f/∂y ≈", round(dfdy, 4), "(теория: x =", x, ")")
print("f =", f(x, y), "± ", round(sigma_f, 4))

Вывод:

∂f/∂x ≈ 5.0 (теория: y = 5.0 )
∂f/∂y ≈ 4.0 (теория: x = 4.0 )
f = 20.0 ±  0.6403

Численные производные совпали с аналитическими ($\partial f/\partial x = y$, $\partial f/\partial y = x$), а итоговая погрешность результата составила 0,64. Формула работает.

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

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

Итог

  • Погрешность косвенного результата собирается из погрешностей входов через частные производные.
  • Частная производная — коэффициент чувствительности результата к данному входу.
  • Складываются квадраты вкладов (закон Пифагора для независимых погрешностей).
  • Производные можно брать численно, что делает формулу универсальной.
Проверьте себя
1. Что играет роль коэффициента чувствительности в формуле распространения погрешности?
Aсамо значение xᵢ
Bчастная производная ∂f/∂xᵢ
Cпогрешность σ
Dчисло измерений
2. Почему вклады складываются как квадраты, а не линейно?
Aтак проще считать
Bнезависимые случайные погрешности комбинируются по теореме Пифагора
Cквадраты всегда больше
Dэто требование ГОСТ