Накопление погрешностей

Накопление погрешностей — это явление, при котором отдельные малые неточности измерений, представления чисел и вычислений постепенно складываются и приводят к более существенному отклонению итогового результата от истинного значения. В лабораторных измерениях это проявляется, когда систематические и случайные погрешности повторяются на протяжении серии операций; в численных методах — когда округления и аппроксимации в каждой итерации суммируются. Оценки того, как погрешности распространяются через модель или алгоритм, обычно выражаются с помощью приближённых формул вида ΔzzxΔx+zyΔy\Delta z \approx \left|\frac{\partial z}{\partial x}\right|\Delta x + \left|\frac{\partial z}{\partial y}\right|\Delta y, которые отражают вклад частичных производных и абсолютных ошибок, или через соотношения для относительных ошибок, например ΔzzΔxx+Δyy\frac{\Delta z}{z} \approx \frac{\Delta x}{x} + \frac{\Delta y}{y}.

Практическое значение накопления погрешностей велико: при проектировании эксперимента, выборе численных методов и при анализе результатов необходимо учитывать, насколько устойчивым и невосприимчивым к накоплению ошибок является процесс. В теории численных методов различают понятия обусловленности задачи и устойчивости алгоритма: даже хорошо обусловленная задача может приводить к большим ошибкам, если алгоритм аккумулирует округления. Для суммирования большого числа слагаемых и для многократно применяемых итерационных схем полезно знать грубые верхние границы ошибки, например оценку аккумулирующегося округления вида Ошибка суммирования(n1)ui=1nxi\text{Ошибка суммирования} \le (n-1)u \sum_{i=1}^n |x_i|, которая показывает, что при большом числе операций даже «малые» машинные погрешности могут стать заметными.

Пример. При последовательном суммировании тысячи чисел, имеющих примерно одинаковый порядок величины, индивидуальные округления при каждом шаге могут привести к итоговой погрешности, заметно превышающей ожидаемую при однократном измерении. В практике используют приёмы снижения накопления погрешностей: перестановку слагаемых по модулю (суммировать сначала меньшие по модулю), алгоритмы компенсированной суммы, контроль точности с увеличенной разрядностью и анализ чувствительности входных данных. На графике ошибки от номера операции это может выглядеть как медленный, но неуклонный рост ошибки вдоль вычислений. {IMAGE_0}