Что такое погрешность и зачем её оценивать
Урок вводит язык погрешностей: абсолютная и относительная, источники ошибки и почему «ответ без оценки погрешности» бесполезен.
Абсолютная погрешность приближения $x^*$ к точному $x$ — это $|x - x^*|$. Относительная погрешность — $\frac{|x - x^*|}{|x|}$, доля ошибки от самой величины.
Почему ответ без погрешности — не ответ
Представьте, что прибор показал «длина моста 305 метров». Это много или мало ошибка? Если истинная длина 305.2 — отлично. Если 280 — катастрофа. Само число без указания, насколько ему можно верить, в инженерии бесполезно. Поэтому численный результат всегда сопровождают оценкой погрешности: «305 ± 0.5 м». Цель численных методов — не просто посчитать, а посчитать с обоснованной границей ошибки.
Абсолютная и относительная погрешность
Абсолютная погрешность измеряется в тех же единицах, что и величина. Относительная — безразмерна (часто в процентах) и честнее отражает «качество» ответа, когда величины разного масштаба. Ошибка в 1 метр катастрофична для детали часов и ничтожна для расстояния до Луны — относительная погрешность это улавливает, абсолютная нет.
# Сравним два приближения по абсолютной и относительной погрешности
случаи = [
("длина детали", 0.0050, 0.0051), # точное, приближённое
("расстояние", 384400.0, 384405.0),
]
for имя, точное, прибл in случаи:
абс = abs(точное - прибл)
отн = абс / abs(точное)
print(f"{имя:14}: абс = {абс:<12g} отн = {отн*100:.4f}%")
Вывод:
длина детали : абс = 0.0001 отн = 2.0000% расстояние : абс = 5 отн = 0.0013%
Абсолютная ошибка детали (0.0001) в 50000 раз меньше ошибки расстояния (5), но относительно деталь измерена в 1500 раз хуже. Когда говорят «метод даёт 6 верных значащих цифр» — речь именно об относительной погрешности порядка $10^{-6}$.
Откуда берутся ошибки: метод и округление
В любом численном расчёте погрешность складывается из двух принципиально разных источников:
| Источник | Природа | Как уменьшить |
| Погрешность метода (усечения) | мы заменили точную задачу приближённой: оборвали ряд, взяли конечную сетку | измельчить сетку, взять больше членов, метод выше порядка |
| Погрешность округления | компьютер хранит числа с конечным числом цифр, каждая операция чуть округляет | аккуратные формулы, иногда — двойная точность; полностью убрать нельзя |
Коварство в том, что они тянут в разные стороны. Хотим уменьшить погрешность метода — измельчаем сетку (берём меньше $h$). Но при очень малом $h$ начинают накапливаться ошибки округления. Суммарная погрешность сначала падает, достигает минимума, а потом снова растёт.
import math
# Производная sin в точке 1 через (f(x+h)-f(x))/h. Истина = cos(1).
истина = math.cos(1.0)
print(f"{'h':>10} | {'погрешность':>14}")
print("-" * 28)
for k in range(2, 18, 2):
h = 10.0 ** (-k)
приближение = (math.sin(1.0 + h) - math.sin(1.0)) / h
print(f"{h:10.0e} | {abs(приближение - истина):14.2e}")
Вывод:
h | погрешность
----------------------------
1e-02 | 4.22e-03
1e-04 | 4.21e-05
1e-06 | 4.21e-07
1e-08 | 1.41e-08
1e-10 | 5.85e-08
1e-12 | 4.32e-05
1e-14 | 3.71e-03
1e-16 | 5.40e-01
Чёткая «долина»: до $h \approx 10^{-8}$ главная — погрешность метода, она падает с $h$. После — взрывается погрешность округления (мы вычитаем два почти равных числа и делим на крошечное $h$). Минимум где-то посередине. Это типичнейшая картина численного анализа, и её надо знать в лицо.
Как работает под капотом
Погрешность метода обычно ведёт себя как $C \cdot h^p$, где $p$ — порядок точности. Для нашей грубой производной $p = 1$: при делении $h$ на 100 ошибка делится на 100 (видно: 4.22e-03 → 4.22e-05). Порядок — паспорт метода: он говорит, насколько быстро окупается измельчение сетки. Метод второго порядка ($p = 2$) при том же измельчении даёт в 100 раз меньшую ошибку, чем первого.
Погрешность округления, наоборот, растёт с измельчением как $\varepsilon / h$ для разностных формул: чем меньше $h$, тем катастрофичнее потеря значащих цифр при вычитании близких чисел. Баланс этих двух членов и задаёт оптимальный шаг.
Частые ошибки
- Путать абсолютную и относительную погрешность. «Ошибка 0.001» бессмысленна без масштаба величины — для разных задач это либо идеал, либо провал.
- Думать, что меньше h всегда точнее. Существует оптимальный $h$; за ним округление портит результат.
- Отчитываться «точным» числом из 17 цифр. Если погрешность 0.01, значащих цифр всего три — остальные шумят. Округляйте ответ до достоверных цифр.
Итоги
- Абсолютная погрешность — $|x - x^*|$; относительная — $\frac{|x - x^*|}{|x|}$, безразмерная мера качества.
- Две природы ошибки: метода (усечения, падает с $h$) и округления (растёт с измельчением).
- Суммарная погрешность имеет минимум при оптимальном $h$ — «слишком точно» вредит.
- Численный ответ всегда сопровождают оценкой погрешности; лишние цифры — шум.