Округление и оценка при вычислениях

Введение: зачем нужны округления и оценки

При реальных вычислениях часто встречаются числа с большим количеством знаков или результаты, полученные с ограничённой точностью. Округление упрощает запись и сравнение чисел, а оценка погрешности помогает понять, насколько приближённый результат близок к точному.

Простой наглядный пример: число 3.141593.143.14159\approx 3.14 чаще записывают короче, оставляя нужное количество знаков. Это экономит место и делает вычисления удобнее, но вводит погрешность.

Округление - операция замены числа на ближайшее к нему число с заданным форматом (например, с фиксированным числом десятичных знаков или значащих цифр).

Основные определения: абсолютная и относительная погрешности

Абсолютная погрешность - разность по модулю между точным числом x и его приближением \(\tilde{x}\): Δ=xx~\Delta=\lvert x-\tilde{x}\rvert

Относительная погрешность - отношение абсолютной погрешности к модулю точного значения x: δ=xx~x\delta=\dfrac{\lvert x-\tilde{x}\rvert}{\lvert x\rvert}

Абсолютная погрешность удобна, когда сравниваем числа одного порядка величин. Относительная погрешность показывает вклад ошибки по отношению к самому числу и важна при сравнении чисел разного порядка.

Правила округления и оценка погрешности округления

При округлении числа x до d знаков после десятичной точки принято гарантировать, что абсолютная погрешность не превышает половины единицы в последнем учтённом разряде. Формально это выражается так: xx~1210d\lvert x-\tilde{x}\rvert\le\tfrac{1}{2}\cdot10^{-d}

Если округление делается до n значащих цифр, то можно дать оценку относительной погрешности: xx~x12101n\dfrac{\lvert x-\tilde{x}\rvert}{\lvert x\rvert}\le\tfrac{1}{2}\cdot10^{1-n}

Пример округления: 0.0045670.004570.004567\approx 0.00457 — число показано с тремя значащими цифрами.

Правила оформления при «половинных» случаях (когда удаляемая часть ровно половина единицы в последнем разряде) могут быть разными: классическое округление вверх или так называемое банковское округление (round to even), когда оставляют чётную последнюю цифру.

Сложение и вычитание: как ведут себя погрешности

При суммировании или вычитании абсолютные погрешности складываются в худшем случае. Для двух чисел это записывается как оценка сверху: (a+b)(a~+b~)aa~+bb~\lvert(a+b)-(\tilde{a}+\tilde{b})\rvert\le\lvert a-\tilde{a}\rvert+\lvert b-\tilde{b}\rvert

Для суммы большого числа слагаемых аналогично действует неравенство: iaiia~iiaia~i\Bigl\lvert\sum_i a_i-\sum_i\tilde{a}_i\Bigr\rvert\le\sum_i\lvert a_i-\tilde{a}_i\rvert

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

Умножение и деление: относительные погрешности

Для произведения двух чисел удобно работать с относительными погрешностями. Разность произведений можно разложить так: aba~b~=a(bb~)+(aa~)b~ab-\tilde{a}\tilde{b}=a(b-\tilde{b})+(a-\tilde{a})\tilde{b}

Отсюда следует приближённая оценка относительной погрешности произведения (при малых погрешностях): aba~b~abaa~a+bb~b\dfrac{\lvert ab-\tilde{a}\tilde{b}\rvert}{\lvert ab\rvert}\approx\dfrac{\lvert a-\tilde{a}\rvert}{\lvert a\rvert}+\dfrac{\lvert b-\tilde{b}\rvert}{\lvert b\rvert}

Масштабирование - умножение на константу. При умножении на число c абсолютная погрешность умножается на |c|: caca~=caa~\lvert c\,a-c\,\tilde{a}\rvert=\lvert c\rvert\,\lvert a-\tilde{a}\rvert

Оценки для функций и дифференциальный подход

Если значение функции f известно в вещественной точке x, а приращение аргумента не слишком велико, то для оценки изменения значения функции удобно использовать линейное приближение с производной: f(x+Δx)f(x)+f(x)Δxf(x+\Delta x)\approx f(x)+f''(x)\,\Delta x

Отсюда приближённая оценка величины изменения (погрешности) значения функции: f(x+Δx)f(x)f(x)Δx\lvert f(x+\Delta x)-f(x)\rvert\approx\lvert f''(x)\rvert\,\lvert\Delta x\rvert

Такой подход полезен, когда требуется оценить, как малая погрешность в аргументе влияет на результат (напр., при вычислении синуса, логарифма, показательной функции и т.п.).

Практические примеры оценок и правила вычислений

Рассмотрим пример произведения с округлениями: 1.2345.6781.235.681.234\cdot5.678\approx 1.23\cdot5.68. Чтобы оценить относительную погрешность результата, вычислим относительные погрешности множителей: 1.2341.231.2340.00324\dfrac{\lvert1.234-1.23\rvert}{\lvert1.234\rvert}\approx0.00324 и 5.6785.685.6780.000352\dfrac{\lvert5.678-5.68\rvert}{\lvert5.678\rvert}\approx0.000352, их сумма даёт приблизительную относительную погрешность результата: 0.00324+0.0003520.0035920.00324+0.000352\approx0.003592.

Эти оценки означают, что если относительные погрешности множителей малы, то относительная погрешность произведения также мало и примерно равна сумме относительных погрешностей множителей. Это удобно при оценке погрешностей в инженерных приближениях.

Обратите внимание: при вычитании близких по величине чисел относительная погрешность результата может резко возрасти, потому что абсолютные ошибки складываются, а сам результат мал по модулю.

Практические советы по уменьшению ошибки в вычислениях

1) Сохраняйте больше значащих цифр в промежуточных расчётах и округляйте только в конце. Это уменьшает накопление ошибок при последовательных операциях.

2) При суммировании очень больших и очень малых чисел сначала суммируйте малые между собой (если возможно) — это минимизирует потерю значащих цифр у малых слагаемых.

3) Используйте численные методы с контролем устойчивости и известными оценками погрешностей. Оценки, приведённые выше (для сумм, произведений и функций), помогают предсказывать и контролировать погрешность конечного результата.

Определения и напоминания

Погрешность округления - разность между истинным значением и округлённым значением; обычно ограничена половиной единицы в последнем учитываемом разряде (см. xx~1210d\lvert x-\tilde{x}\rvert\le\tfrac{1}{2}\cdot10^{-d}).

Накопление погрешностей - явление, когда последовательные операции с приближенными величинами приводят к увеличению общей погрешности; при сложении это выражается формулой iaiia~iiaia~i\Bigl\lvert\sum_i a_i-\sum_i\tilde{a}_i\Bigr\rvert\le\sum_i\lvert a_i-\tilde{a}_i\rvert, при умножении — оценкой aba~b~abaa~a+bb~b\dfrac{\lvert ab-\tilde{a}\tilde{b}\rvert}{\lvert ab\rvert}\approx\dfrac{\lvert a-\tilde{a}\rvert}{\lvert a\rvert}+\dfrac{\lvert b-\tilde{b}\rvert}{\lvert b\rvert}.