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

Введение: почему важны погрешности

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

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

Определения основных типов погрешностей

Абсолютная погрешность - значение, характеризующее разницу между истинным значением величины и её приближённым значением: Δx=xx~|\Delta x| = |x - \tilde{x}|

Относительная погрешность - отношение абсолютной погрешности к модулю истинного значения, дающее представление о размере ошибки относительно величины: δx=Δxx\delta x = \dfrac{|\Delta x|}{|x|}

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

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

Округление — это замена числа другим, имеющим более простую запись. При округлении сохраняют лишь ограниченное число значимых цифр, что приводит к дополнительной (внешней) погрешности. Формулу записи результата округления при округлении до n десятичных знаков можно описать так: x~=round(x10n)10n\tilde{x} = \dfrac{\mathrm{round}(x\cdot 10^{n})}{10^{n}}

Ограничение разности между точным и округлённым значением даёт верхнюю оценку погрешности округления: Δx1210n|\Delta x| \le \dfrac{1}{2}10^{-n}

При переводе единиц измерения абсолютная погрешность масштабируется вместе с величиной: если длину в метрах умножить на коэффициент перевода в сантиметры, то абсолютная погрешность умножается на тот же коэффициент. Это можно записать кратко как: i=1n(1+δi)=1+θn,θnγn=nε1nε\displaystyle \prod_{i=1}^n(1+\delta_i)=1+\theta_n,\quad |\theta_n|\le\gamma_n=\dfrac{n\varepsilon}{1-n\varepsilon}

Погрешности при арифметических операциях

При сложении или вычитании абсолютные погрешности суммируются в худшем случае, что даёт простую верхнюю оценку для ошибки результата: Δ(x+y)Δx+Δy|\Delta (x+y)| \le |\Delta x| + |\Delta y|

При умножении и делении удобнее оперировать относительными погрешностями. Для произведения двух величин относительную погрешность итогового результата можно при малых отклонениях аппроксимировать суммой относительных погрешностей множителей: Δ(xy)xyΔxx+Δyy\dfrac{|\Delta(xy)|}{|xy|} \approx \dfrac{|\Delta x|}{|x|} + \dfrac{|\Delta y|}{|y|}

Более формально, при малых приращениях функция может быть линеаризована с помощью производной, и приращение функции оценивается как произведение производной на приращение аргумента: Δff(x)Δx\Delta f \approx f''(x)\,\Delta x. Этот приём используется для оценки изменения сложных выражений и дает базовую методику для оценки погрешностей при нелинейных преобразованиях.

Погрешности, связанные с представлением чисел в компьютере

Компьютер хранит числа в ограниченном формате с конечным числом разрядов мантиссы и экспоненты (плавающая точка). Общая форма нормализованного представления в двоичной системе имеет вид: x=±(1.f1f2fp1)2×2ex=\pm(1.f_1f_2\dots f_{p-1})_2\times 2^{e}

Характерной величиной точности формата является машинный эпсилон, которая для формата с p бит мантиссы определяется как: εmach=21p\varepsilon_{\mathrm{mach}} = 2^{1-p}. Практически используют также понятие единицы округления или «дельты» округления: u=12εmachu = \dfrac{1}{2}\varepsilon_{\mathrm{mach}}

При выполнении базовых операций в плавающей точке результат фактически равен истинной операции, умноженной на множитель, близкий к единице: fl(xy)=(xy)(1+δ),δεmach\mathrm{fl}(x\circ y)=(x\circ y)(1+\delta),\quad |\delta|\le\varepsilon_{\mathrm{mach}}. Это удобная модель для последующего анализа накопления ошибок.

Феномены: вычитание почти равных величин и потеря значащих цифр

Одним из опасных эффектов является «вырождение» при вычитании почти равных чисел: значимые цифры взаимно компенсируются, и относительная ошибка результата может сильно возрасти. В грубой оценке это выражается так: Δ(xy)Δx+Δyxy|\Delta (x-y)| \approx \dfrac{|\Delta x|+|\Delta y|}{|x-y|}

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

Условность задачи и численная обусловленность

Численная обусловленность - свойство математической задачи, характеризующее чувствительность решения к малому изменению входных данных. Условность функции в точке может быть выражена через условное число: κ(f,x)=limΔx0Δf/fΔx/x=xf(x)f(x)\kappa(f,x)=\lim_{\Delta x\to0}\dfrac{|\Delta f/f|}{|\Delta x/x|}=\left|\dfrac{x f''(x)}{f(x)}\right|

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

Переходные и обратные ошибки (forward/backward)

Обратная погрешность - мера, показывающая, насколько надо изменить входные данные, чтобы получить именно вычисленный результат. Формально вычисленный результат можно представить как значение точной функции на слегка изменённых входных данных: f~=f(x+Δxb)\tilde{f}=f(x+\Delta x_{\mathrm{b}})

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

Накопление ошибок при суммировании длинного ряда и методы компенсации

При последовательном выполнении операций погрешности умножаются или суммируются, в результате чего итоговое отклонение может расти с числом операций. Для произведения множителей с малыми относительными погрешностями можно записать приближение: Kahan step: {y=aic,t=s+y,c=(ts)y,s=t\text{Kahan step: }\begin{cases}y=a_i-c,\\ t=s+y,\\ c=(t-s)-y,\\ s=t\end{cases}

Для суммирования многих слагаемых используются алгоритмы, снижающие накопление ошибки. Один из наиболее известных приёмов — алгоритм Кахана для суммирования с компенсацией, где на каждой итерации корректирующая переменная хранит потерянную часть. Шаг алгоритма можно описать последовательностью выражений: {FORMULA_17}

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

Практические рекомендации и примеры

Пример 1. Округление длины до двух знаков после запятой: если требуется округлить величину, вычисляют сначала сдвиг на десятичный множитель, затем округление и обратный сдвиг. Формально: x~=round(x10n)10n\tilde{x} = \dfrac{\mathrm{round}(x\cdot 10^{n})}{10^{n}}. Верхняя оценка погрешности округления для такого случая: Δx1210n|\Delta x| \le \dfrac{1}{2}10^{-n}.

Пример 2. При переводе метров в сантиметры абсолютная погрешность масштабируется как в формуле: i=1n(1+δi)=1+θn,θnγn=nε1nε\displaystyle \prod_{i=1}^n(1+\delta_i)=1+\theta_n,\quad |\theta_n|\le\gamma_n=\dfrac{n\varepsilon}{1-n\varepsilon}. Это означает, что если изначальная абсолютная погрешность была мала, то после масштабирования абсолютная погрешность также увеличится в том же соотношении.

Пример 3. Если программа считает сумму большого количества чисел, рекомендуется применять компенсационные алгоритмы (см. {FORMULA_17}) или суммировать числа от меньших к большим по модулю, чтобы уменьшить эффект утопления малых слагаемых.

Итоги: контроль и оценка погрешностей

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

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