Погрешность измерения и погрешность преобразования в десятично-двоичной арифметике

Приводимые ниже размышления  полезны для понимания особенностей десятично-двоичных вычислений, т.е. двоичных  вычислений, выполняемых над десятичными числами.

Числа, с которыми пользователь имеет дело, разделим на два класса — числа, полученные в результате вычислений, и числа, полученные в результате измерений.

Числа, полученные в результате вычислений можно условно разделить на точные и приближенные.

Точные числа, это множество натуральных чисел и числа, полученные в результате арифметических операций над натуральными числами. Причем, в результате арифметических операций над натуральными числами, могут быть получены как рациональные, так и иррациональные числа. И те и другие множества чисел могут представляться в виде десятичных  чисел с бесконечным количеством цифр в их дробной части. Например, рациональное число 1/3=0.333… имеет бесконечное число цифр, каждое из которых равно 3. Иррациональное десятичное число √2 =1.414… также состоит из бесконечного числа цифр. Оба этих множества объединяет то, что при желании мы можем точно вычислить  любую цифру в дробной части  этих чисел.

Любое число с ограниченным количеством N цифр, полученное  из числа с бесконечным количеством цифр, называется числом, представленным с точностью N, или числом точности N. 

Число с бесконечным количеством цифр, в котором любая цифра может быть точно  вычислена  называется числом бесконечной точности. Например, число √2 равно десятичному числу z(∞)=1.414… бесконечной точности и числу x(3)= 1.41 с точностью N=3.  Число ограниченной точности, полученное из числа бесконечной точности, становится числом приближенным. Преобразование числа z(∞) в число x(N) называется округлением и выполняется по некоторому заданному сценарию.

Округление может также выполняться путем преобразования числа z(n) с конечным n в число x(N), если n ≥ N. В этом случае z(∞) является частным случаем для n ≥ N.

Разность μ = z(n) — x(N) является погрешностью округления. Округленное число будет равно − x(N) = z(n) + μ. Погрешность округления мы можем определить с любой точностью, вычисляя достаточное количество цифр в округляемом числе.  Важно отметить, что погрешность округления μ в округленном числе z(N) явно не присутствует. 

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

Согласно правилам приближенных вычислений при десятичных расчетах, выполняемых с точностью до определенного пользователем количества значащих цифр, в исходных и промежуточных числах оставляют, как правило, N цифр, которые считаются верными [1]. Иногда оставляют дополнительно еще одну, сомнительную цифру. Количество цифр N определяется пользователем, исходя из требований необходимой точности расчетов. Чтобы лишние цифры не искажали результаты при десятичных вычислениях, они отбрасываются на всех этапах расчета путем соответствующего округления.

При проведении десятично-двоичных расчетов, десятичные числа на входе вычислительного устройства должны быть проконвертированы в двоичный код. Все основные двоичные арифметические операции с числами с плавающей точкой  (ЧПТ) регламентируются в настоящее время стандартом IEEE754 [2] и, в частности, недавно принятой редакцией ­–  IEEE754-2019. Двоичные числа y(p)  в стандарте кодируются  во внутреннем двоичном формате компьютера тройкой коэффициентов ­– S,M,e. Где S – код знака числа (0-плюс,1-минус),  20 ≤ М2 < 21 – нормализованная мантисса, представленная p цифрами, e  ­–  экспонента (порядок), 2e − характеристика. Экспонента e в упакованном виде представляется в смещенном виде.

Основная концепция стандарта IEEE754 основана на аппроксимации десятичных чисел z(N), с N значащими цифрами, двоичными ЧПТ y*(p) с p двоичными цифрами. Звездочкой будем помечать число, значение которого получено конвертацией десятичного числа z(N) и которое является ближайшим к аппроксимируемому числу. Точность аппроксимации числа z(N), при таком подходе,  зависит от количества разрядов p, отведенных под мантиссу числа y*(p) . Чем больше разрядов p отведено под мантиссу M2, тем точнее аппроксимация числа z(N). Число p принято называть точностью аппроксимации или просто точностью.

 Итак, чтобы выполнить  двоичные вычисления в десятично-двоичной арифметике, любое десятичное число z(N) должно быть преобразовано в двоичное число y*(p), которое равно десятичному числу x*(n).  Будем писать  x*(n) ≅  z(N), что означает, что число x*(n) является ближайшим к аппроксимируемому числу z(N).  Т.к. десятичное число y*(p)= x*(n)≅  z(N), то будем говорить, что число y*(p) является двоичным эквивалентом десятичного числа z(N), или, что двоичное число y*(p) эквивалентно десятичному числу z(N).

Если x*(n) = y*(p), то x*(n) является представимым числом. Операцию преобразования десятичного числа z(N) в двоичное число будем обозначать круглыми скобками с нижним индексом 2(z(N))2.  Поскольку двоичная и десятичная системы счисления несоизмеримы, то в результате преобразования     (z (N))2  мы получаем y*(p)= x*(n) ≠ z(N). При этом x*(n) ≅ z(N).

В результате конвертации y*(p)= (z(N))2, десятичное число z(N) приобретает приближенное значение x*(n)= y*(p), и тогда число x*(n)= z(N) ± μ  будет содержать n ≥ N  цифр. Здесь  μ — ошибка двоичного преобразования десятичного числа z(N). Эту ошибку называют погрешностью преобразования. Особенностью такой погрешности является то, что она в явном виде присутствует в приближенном значении x*(n). Поэтому, на вход двоичного вычислительного устройства поступает не число z(N), а, чаще всего, ближайшее к нему, число x*(n). Это новое число x*(n) участвует в арифметических операциях вместо числа z(N).

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

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

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

 

 

Ссылки.

  1. Основные правила приближенных вычислений     https://studfile.net/preview/2043970/page:3/
  2. IEEE Standard for Binary Floating-Point Arithmetic. 1985. https://en.wikipedia.org/wiki/IEEE_754-1985

     

Я изобретатель, имею 18 авторских свидетельств СССР на изобретения и два патента. Последние несколько лет занимаюсь исследованием проблем компьютерной математики.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *