Что такое погрешность и зачем её оценивать
Урок вводит язык погрешностей: абсолютная и относительная, источники ошибки и почему «ответ без оценки погрешности» бесполезен.
Абсолютная погрешность приближения
x*к точномуx— это|x − x*|. Относительная погрешность —|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 ≈ 10^-8 главная — погрешность метода, она падает с h. После — взрывается погрешность округления (мы вычитаем два почти равных числа и делим на крошечное h). Минимум где-то посередине. Это типичнейшая картина численного анализа, и её надо знать в лицо.
Как работает под капотом
Погрешность метода обычно ведёт себя как C · h^p, где p — порядок точности. Для нашей грубой производной p = 1: при делении h на 100 ошибка делится на 100 (видно: 4.22e-03 → 4.22e-05). Порядок — паспорт метода: он говорит, насколько быстро окупается измельчение сетки. Метод второго порядка (p = 2) при том же измельчении даёт в 100 раз меньшую ошибку, чем первого.
Погрешность округления, наоборот, растёт с измельчением как eps / h для разностных формул: чем меньше h, тем катастрофичнее потеря значащих цифр при вычитании близких чисел. Баланс этих двух членов и задаёт оптимальный шаг.
Частые ошибки
- Путать абсолютную и относительную погрешность. «Ошибка 0.001» бессмысленна без масштаба величины — для разных задач это либо идеал, либо провал.
- Думать, что меньше h всегда точнее. Существует оптимальный
h; за ним округление портит результат. - Отчитываться «точным» числом из 17 цифр. Если погрешность 0.01, значащих цифр всего три — остальные шумят. Округляйте ответ до достоверных цифр.
Итоги
- Абсолютная погрешность —
|x − x*|; относительная —|x − x*|/|x|, безразмерная мера качества. - Две природы ошибки: метода (усечения, падает с
h) и округления (растёт с измельчением). - Суммарная погрешность имеет минимум при оптимальном
h— «слишком точно» вредит. - Численный ответ всегда сопровождают оценкой погрешности; лишние цифры — шум.