Чтение онлайн

ЖАНРЫ

Интернет-журнал "Домашняя лаборатория", 2007 №1
Шрифт:

Случай систематических дробей хорошо известен. При разложении числа в двоичную дробь длины m, т. е. при использовании m значащих бит для мантиссы погрешность приближения числа ? составит — (1/2)•2– m = 2-m-1. Поэтому для достижения потребной точности ? мы должны иметь

2– m-1 < ? => -m - 1 < log2 ? => m > -log2 ?
– 1 = log2(1/?) - 1.

Таким образом для достижения точности ? мы должны затратить по меньшей мере

I2(?) = log2 (1/?) — 1 (1)

бит информации.

2. Разложим теперь наше число ?

в цепную дробь:

и возьмем в качестве представления числа ? последовательность {а1, а2…., аn}, обрезая цепную дробь на n– м члене, т. е. беря n– ю подходящую дробь (поскольку ? € (0,1), то, очевидно, а0 = 0).

Известно, что для записи числа ?i, — требуется в среднем log2 ?i — бит, и значит для хранения последовательности {а1, а2…., аn} этих бит потребуется по меньшей мере

Iс = ?ni=1 log2 ai = log2 Пni=1ai

(2)

Остается связать данное количество информации с потребной точностью представления числа ?. Этим мы и займемся.

Известно (см. [1], стр. 40, формула (30)), что подходящая дробь

построенная по числу а, приближает его с точностью 1/q2n:

|?(pn/qn)| < 1/q2n

Поэтому для приближения ? с точностью ? достаточно соблюдения условия

1/q2n < ? => qn > 1/??

Остается получить оценку сверху для qn, причем требуется оценить qn величиной, связанной с Ic. Сделаем это.

Для знаменателей qn подходящих дробей справедливо рекуррентное соотношение (см. [1], стр. 11, формула (7))

qк = aкqк-1 + aкqк-2,

причем по определению полагается q– 1 = 0, q0 = 1. Тогда q1 = а1, q2 = a2a1 + 1, q3 = a3a2a1 + a3 + a1 и т. д.

Лемма. Для знаменателей qn верна оценка qn <= 2n-1?n, где ?n= Пn i=1= ai.

Доказательство (методом мат. индукции). Для n = 1 утверждение верно, ибо q1 = а1. Предположим, что оценка верна для всех k и n. Тогда

поскольку

выражение в круглых скобках не превосходит единицы ибо аn >= 1, аn+1 >= 1. Лемма доказана.

Опираясь теперь на лемму, заключаем, что для аппроксимации числа ? с точностью ? должно быть:

1/?? < qn =< 2n-1Пni-1 ai

Следовательно, используя (2), находим:

Таким образом, учитывая (1), получаем соотношение:

Ic(?) >= (1/2)•I2(?) - n + 3/2

Впрочем, данная оценка довольно груба. Ее можно немного усилить.

С другой стороны, очевидно, qn >= Пn i=1 ai (доказывается тоже индукцией), поэтому если

1/q2n < ? < 1/q2n-1

то

qn-1 < 1/?? < qn

(5)

и, значит

Поэтому,

Ic(?) <= 1/2•I2(?) + 1/2 + log2 an

Если принять, что 1/q2n < ?, то оценка упрощается:

Ic(?) <= 1/2•I2(?) + 1/2

Таким образом видим, что теоретическая нижняя граница для Ic(?) — объема данных, потребных для хранения вещественного числа а, оценена нами как сверху (формулы (6) и (6’)), так и снизу (формула (4)). Поэтому в случае больших объемов информации (Ic(?) —> оо) представление числа в виде цепной дроби требует примерно вдвое меньшего количества бит, т. е. достигаемое сжатие — порядка 50 %.

3. Оценку (6) можно несколько улучшить. Для этого достаточно вместо (3) использовать более точную оценку приближения произвольного числа а подходящими дробями. Именно, ([1]. стр. 30) имеют место неравенства:

(7)

Поэтому если дробь pn/qn — первая из последовательности подходящих дробей, которая приближает число а с точностью ?, то, очевидно, имеют место неравенства:

и в тоже время

Из последнего неравенства вытекает

qn-1qn <= 1/? (8)

Но

qn-1qn = qn-1(anqn-1 + qn-2) >= anq2n-1

Поэтому (8) превращается в неравенство

каковая оценка является просто уточнением первого из неравенств (5). Поэтому точно так же, как и раньше получаем уточненную оценку для Ic(?):

Поделиться с друзьями: