Информатика
УДК 519.688
LINSPACE КОНСТРУКТИВНЫЙ АНАЛОГ ФУНКЦИИ (1 + x)h
С. В. Яхонтов
Санкт-Петербургский государственный университет, математико-механический факультет
198504, г. Санкт-Петербург, Старый Петергоф, Университетский пр-т., 28 E-mails: sergey_home_mail@inbox.ru, ysv@tercom.ru
Проводится построение алгоритмов класса FLINSPACE на основе разложения в ряд Тейлора для вычисления приближенных значений функции (1 + x)h с произвольной точностью. Данная функция рассматривается на множестве конструктивных вещественных чисел, т. е. в качестве аргумента x берутся алгоритмы, вычисляющие рациональные приближения.
Ключевые слова: рациональные приближения, алгоритмы, точность.
Введение. В данной статье предлагаются алгоритмы для вычисления в пределах LINSPA CE и с полиномиальным временем приближенных значений вещественной функции
f (x) = (1 + x)h (1)
для x из интервала ( — 1, +то) и рациональных h, \h\ < 1. Работа выполнена в рамках построения LINSPACE вычислимого математического анализа аналогично построению P вычислимого математического анализа [1].
Основные сведения о классах вычислительной сложности можно найти в [2]. FLINSPACE является стандартным обозначением для класса алгоритмов, использующих в процессе вычислений промежуточную память, объем которой ограничен сверху линейной функцией от длины входных данных (т.е. Cn). Под вычислениями в пределах LINSPACE будем понимать те, которые применяют алгоритмы из класса FLINSPACE.
В данной работе функция (1) вычисляется на основе разложения в ряд Тейлора. Отличительной особенностью алгоритмов расчета элементарных функций, использующих разложения в ряды, является относительная простота, так как при этом обычно производятся только арифметические операции над рациональными числами без обращения к дополнительным алгоритмам. К тому же для вычислений с небольшим количеством знаков после двоичной точки ряды эффективнее других способов в связи с небольшими константами в оценках вычислительной сложности. Поэтому такие алгоритмы важны в информатике для практических приложений.
Выражение (1 + x)h рассматривается на множестве конструктивных вещественных чисел. Такие числа задаются алгоритмами, вычисляющими рациональные приближения, а построение алгоритма, с помощью которого рассчитываются приближения функции по приближениям аргумента, позволяет
Яхонтов Сергей Викторович — старший преподаватель каф. информатики Санкт-Петербургского государственного университета.
говорить о конструктивной функции, являющейся конструктивным аналогом исходной функции.
Для практических приложений важно уметь вычислять значения конструктивных элементарных функций на множестве конструктивных вещественных чисел с помощью алгоритмов из некоторого емкостного класса сложности, которые одновременно были бы полиномиальными по времени. В качестве такого класса емкостной сложности представляется разумным взять класс LINSPACE. По аналогии с классом временной сложности P его можно назвать классом осуществимых вычислений с точки зрения требуемой для вычислений памяти. Подтверждением этой неформальной характеристики может служить то, что в настоящее время в работах по теоретической информатике для вычислений в пределах LINSPACE утвердился термин «space-efficient evaluation».
На данный момент нами не найдены публикации других авторов, в которых содержался бы анализ емкостной вычислительной сложности функции (1).
1. Конструктивные вещественные числа и функции. В данной статье основу представления конструктивных объектов составляет понятие вычислимой последовательности ф, сходящейся по Коши [1]. Такая последовательность определяется на множестве всех натуральных чисел N, включая 0, а областью аппроксимирующих значений является всюду плотное в R естественное подмножество множества рациональных чисел. Для последовательности, сходящейся по Коши и задающей вещественное число х, требуют, чтобы выполнялось |ф(п) — х| ^ 2-n для любого натурального п.
В качестве множества аппроксимирующих значений берется множество двоично-рациональных чисел D [1]. Рациональное число d называется двоично-рациональным, если d = m для некоторого целого m и натурального п. Двоично-рациональные числа имеют конечное двоичное представление: строка s, равная ±upup-i... Uq.V\V2 .. .vr, обозначает число
p r
d = ± ^ ' Ui2i ± ^ ' Vj2-j. i=0 j=1
Длина представления двоично-рационального числа определяется как количество символов в строке s, равное (с учётом знака и двоичной точки) p+г+3, и обозначается l(s). Под точностью представления prec (s) понимается число битов справа от двоичной точки, т. е. г. С точки зрения изучения вычислительной сложности двоично-рациональные числа удобны тем, что для любого п двоично-рациональные числа с точностью п равномерно распределены на вещественной прямой [1].
Последовательность ф : N ^ D двоично-рационально сходится к вещественному числу х, если для любого п € N выполняется ргес(ф(п)) = п + 1 и |ф(п) — х| ^ 2-n. Множество всех функций, двоично-рационально сходящихся к вещественному числу х, обозначается CFx. Вещественное число х называется CF конструктивным [1], если CFx содержит вычислимую функцию ф.
Вещественная функция f, заданная на отрезке [a, b], называется конструктивной функцией [1] на этом отрезке, если существует машина Тьюринга M с оракульной функцией такая, что для любого х € [a, b] и любой вычислимой функции ф € CFx функция ф, вычисляемая M с оракульной функцией ф, принадлежит CFf(x). Фактически это означает, что для любой вычислимой функции ф € CFx и любого п € N машина M последовательно вычисляет
m € N и d € D такие, что
|ф(т) - x| < 2-m, |d - f (x)| < 2-n.
Сложность расчёта рациональных приближений конструктивных чисел и функций определяется в [1] на основе длины двоичного представления точности вычисления. Память ленты запроса и ленты ответа оракульной функции, как и время вычисления этой функции, при оценке вычислительных ресурсов машины Тьюринга не учитывается. Обращение к оракульной функции ф € CFx аргумента x конструктивной функции осуществляется следующим образом:
- на ленту запроса оракульной функции записывается точность вычисления аргумента 2-m;
- рассчитывается значение ф(т) оракульной функции, и результат записывается на ленту ответа;
- значение ф(т) считывается с ленты ответа в промежуточную память. При описании алгоритмов данные шаги в явном виде здесь приводиться не будут; просто будет подразумеваться, что процесс вычислений содержит обращения к оракульной функции.
Вещественное число x называется LINSPA CE конструктивным вещественным числом, если существует LINSPACE вычислимая функция ф € CFx. Вещественная функция f, заданная на отрезке [a,b], называется LINSPACE конструктивной вещественной функцией на отрезке [а, b], если для любого x € [а, b] существует LINSPACE вычислимая функция ф из CFf(x). Множества LINSPACE конструктивных вещественных чисел и функций будем обозначать LINSPACEcf и LINSPACE с^ц соответственно. Индекс C[а, b] в обозначении LINSPACEc[a,b] обусловлен тем, что конструктивные функции являются непрерывными на всей области определения [1]. Построение конструктивного аналога вещественной функции f на отрезке [а, b] означает описание алгоритма, вычисляющего двоично-рациональные приближения с произвольной точностью значений f (x) для x € [а, b].
Под приближением t с точностью 2-n будем понимать двоично-рациональное число t* такое, что |t* —1| ^ 2-n. Для модуля t* выполняются следующие неравенства:
|t*| —|t| < |t* — t| < 2-n, т.е. |t*| < |t| +2-n,
|t| — |t*| < |t — t*| ^ 2-n, т.е. |t*| ^ |t| — 2-n.
Далее, пусть двоично-рациональное число t** таково, что |t** — t| ^ 2-(n+1). Отбросим все биты t** после двоичной точки, начиная с (п + 2)-го, а новую
величину обозначим t*. Тогда prec(t*) = п + 1 и |е| = |t* — t**| < 2-(n+1).
Отсюда получаем
|t* — t| < |t* — t** | + |t** — t| < 2-(n+1) + 2-(n+1) = 2-n. (3)
То есть, чтобы вычислить t с точностью 2-n, можно рассчитать t с точностью 2-(n+1), а затем отбросить биты полученной величины t** после двоичной точки, начиная с (п + 2)-го.
2. Вычисление значений степенного ряда. Рассмотрим степенной ряд
S(x) = ^2/ akxk = bo + bob1 x + bob1 b2x2 + ... + bo ... bk-1bkxk + ... (4)
k=0
на отрезке [—Q,Q\, 0 < Q ^ р, где р — радиус сходимости. Пусть bi — LINSPACE конструктивные вещественные числа, x — произвольное LINSPACE конструктивное вещественное число из отрезка [— q, q], ßi — LINSPACE вычислимые функции из CFbi, ф — LINSPACE вычислимая функция из CFx. Пусть также m — некоторое натуральное число, ßi(m) —двоично-рациональные приближения коэффициентов bi с точностью 2-m, ф(т) —двоично-рациональные приближения аргумента x с точностью 2-m.
Рассмотрим частичные суммы Sk(x) = ^k=o aixi ряда (4) с подстановкой ßi(m) вместо bi и ф(т) вместо аргумента x:
sk(m) =
i=o
Wßj(m)
j=o
ф(m)i
Коэффициенты ряда (4) получаются последовательным умножением на величины Ьг с ростом номера коэффициента, т. е. аг = йг-\Ьг с начальным значением ао = Ьо. При вычислении частичных сумм такого ряда удобно не пересчитывать коэффициенты аг, а накапливать их значение вместе с вычислением промежуточных значений. Поэтому воспользуемся следующей схемой с округлением промежуточных результатов для расчета приближения Б'^(т) величины Б к (т):
Но(ш) = вк (т),
дг (т) = вк-г (т)[1 + Ъг-1 (т)ф(т)], г = 1,2,...,к, (5)
Ъг (т) = дг (т) + ег
при г = к полагаем Б^(т) = Ък (т). Величины Ъг (т) получаются отбрасыванием битов дт+1Ят+2 ■ ■ ■ чисел дг(т) после двоичной точки, начиная с (т + 1)-го, т. е.
|ег | = |Ъг (т) - (т)| =0.0... 0<?т+19т+2 ■■■, (6)
а знак совпадает со знаком дг(т) (ясно, что |ег| < 2-т). Оценим величину погрешности вычислений
Д(к, т) = |Б£(т) - Бк(ж)|
при следующих ограничениях на модуль Ьг и д:
|Ьг| ^ 1 при всех г, д ^ 2-1 + 2-5. (7)
Предварительно заметим, используя неравенства (2), что |вг(т)| ^ |Ьг| +2-т и |ф(т)| ^ |ж| +2-т. Для вывода основной оценки понадобится вспомогательное утверждение.
Лемма 1. Для любого фиксированного г ^ 0 выполняется следующее: если т ^ 5, то справедлива оценка
Ъ(т)| < 5. (8)
Доказательство. Применим математическую индукцию по г для Ъг(т). База индукции при г, равном 0:
|Ъо(т)| = |вк(т)| < |Ьк| + 2-т < 1 + 2-5 < 5.
Индукционный переход для (г + 1) ^ 1:
|Ъг+1 (т)| = |вк—(г+1) (т)[1 + Ъг(т)ф(т)] +£¿+11 ^
< (|Ьк-(¿+1) | + 2-т) [1 + Ъ(т)| (|х| + 2-т)] + 2-т
< (1 + 2-т) [1 + 5 ■ (2-1 + 2-5 + 2-т)] + 2-т <
^ (1 + 2-5) [1 + 5 ■ (2-1 + 2-5 + 2-5)] + 2-5 =
= (1 + 2-5) [1 + 90 ■ 2-5] + 2-5 < 5.
<
□
Теперь можно сформулировать утверждение относительно Д(к,т). Лемма 2. При выполнении условий (7) погрешность вычислений по схеме (5) оценивается как
Нг(х) = Ьк-Г[1 + Нг-1(х)х], Н0(х) = Ьк, п(г, т) = |Ъг(т) — Нг(х)|.
Ясно, что ( ^ 2-т, £ ^ 2-т. Воспользуемся методом математической индукции для п(г, т) по г, предполагая, что п(г, т) < 2-т25(г + 1). База индукции при г, равном 0:
п(0, т) = |Ъо(т) — Но(х)| = |вк(т) — Ьк| ^ 2-т < 2-т25(0 + 1).
Оценим сверху выражение п(г + 1, т) для (г + 1) ^ 1:
П(г + 1, т) = |вк-(г+1) (т)[1 + Ъг(т)ф(т)] + £г+1 — Ьк-(г+1) [1 + Н(х)х]| ^
^ 1 (вк—(г+1) (т) — Ьк—(г+1)) + £г+1 1 +
+ 1 в к—(г+1) (т)Ъг (т)ф(т) — Ьк—(г+1)Н (х)х1 .
Рассмотрим последнее слагаемое под модулем, которое обозначим w(г,m):
■ш(г, т) = вк—(г+1) (т)Ъг(т)ф(т) — Ьк—(г+1)Н(х)х =
= вк—(г+1) (т)Ъг (т)ф(т) — Ьк—(Г+1)ЪГ (т)ф(т)+
+ Ьк—(г+1) Ъг (т)ф(т) — Ьк—(г+1)Нг (х)х =
= [вк—(г+1) (т) — Ьк—(г+1)] Ъг (т)ф(т) +
+ Ьк—(г+1) [Ъг(т)ф(т) — Нг(х)х] =
= [вк—(г+1) (т) — Ьк—(г+1)] Ъг(т)ф(т) +
+ Ьк—(г+1) [Ъг(т)ф(т) — Ъг (т)х + Ъг(т)х — Нг(х)х] .
В силу | Ьг | ^ 1 и |ф(т)| < 1 справедлива оценка
^(г, т)| < (|Ъг(т)| + |Ъг(т)|{ + |п(г, т)|(2—1 +2—5).
Д(к, т) < 2—т25(к + 1).
(9)
До ка з а т е ль с тв о. Обозначим к
( = тах |вг (т) — Ьг|, £ = |ф(т) — х|,
г=о
Так как |Ъг(т)| < 5 (из (8)) и по индукционному предположению п(г, т) <
< 2—т25(г + 1), то
П(г + 1, т) < С + |£г+11 + С ' 5 + 5 ■ £ + 2—т25(г + 1) ■ 17 ■ 2—5 <
< 2—т(12 + 17(г + 1)) < 2—т25(г + 1).
Из ^к(т) = Ък(т), 5к(х) = Нк(х), Д(к,т) = п(к,т) получаем искомое неравенство. □
Пусть требуется вычислить частичную сумму £^(к) (х) степенного ряда (4)
с точностью 2—к для некоторого натурального к, где ^ — линейная функция от к, ^(к) ^ 0. Положим
т = т(к1, к2) = 5 + Г^2(к1 + 1)] + к2, (10)
где к1 = ^(к), к2 = к. Тогда т > 5 и, следовательно, погрешность вычисления приближенного значения $и(к)(х) будет оцениваться в соответствии с (9):
Д(^(к), т) < 2—т25 (^(к) + 1) ^ 2—к2 = 2—к. (11)
На основании приведенных оценок можно сформулировать следующий алгоритм.
Алгоритм Раг£га1£ит. Приближенное значение частичной суммы ряда (4). Вход: Запись точности вычисления 2—к.
Оракульная функция: ф для аргумента х.
Выход: Приближенное значение £^(к) (х) с точностью 2—к.
Описание:
1) вычисляем к1 := ^(к), к2 := к;
2) находим т по формуле (10);
3) рассчитываем ф := ф(т);
4) инициализируем цикл: Ъ := в(к1,т);
5) выполняем цикл по г от 1 до к1:
а) рассчитываем Ь := в(к1 — г, т),
б) вычисляем $ = Ь ■ [1 + Ъ ■ ф],
в) Ъ присваиваем величину $, округленную в соответствии с (6);
6) на выход записываем двоичное представление Ъ (в этом представлении будет т битов после двоичной точки).
Пусть степенной ряд (4) линейно сходится, т. е. для остаточного члена выполняется
|гм(га+1)(х)| = |5м(„+1)(х) — 5(х)| ^ 2—(п+1) для любого х € [—£, (?], где ^ — линейная функция. Тогда
|5м(п+1) (т) — 5(х)| < |5Мп+1) (т) — 5М«+1) (х)| + |5М“+1) (х) — 5(х)| ^
^ Д(и(п + 1), т) + |гм(га+1)(х)| ^ Д(и(п + 1), т) + 2—(п+1).
Возьмём т = т(к1, к2) по формуле (10) для к1 = ^(п + 1), к2 = п + 1. Тогда, учитывая неравенство (11), получаем
|Ч*,+1)(т) — 5(х)| < 2-(”+1) + 2-(”+1) = 2"“.
Отсюда видно, что линейной зависимости m от n достаточно для вычисления суммы степенного ряда (4) на отрезке [q, q] с требуемой точностью. По условию величины bi являются LINSPACE вычислимыми, поэтому алгоритм PartialSum, определяющий hr (m) по схеме (5), будет оперировать с числами, длины которых линейно зависят от n, т. е. данный алгоритм будет принадлежать классу FLINSPACE. Если величины bi являются также полиномиально вычислимыми по времени, то алгоритм PartialSum будет в классе FLINSPACE П FP (через FP обозначается класс алгоритмов, полиномиальных по времени).
3. Вычисление приближенных значений функции. Рядом Тейлора функции (1) является биномиальный ряд [3]:
\h і h(h — І) 2 h(h — І)... (h — n +1) n , .
- 1 ' ' v -x2 +----------------------+ —-_/„ v----- xn + .... (12)
(1 + x)h = 1 + hx +
1 ■ 2
1 ■ 2 ■ ... ■ n
Остаточный член в форме Коши для |х| < 1 имеет вид [3]
f (“+1) (дх)
гга (х) = -----р ^(1 — Д)“х“+1 = ^1 ^2^3,
П!
где
V1 =
h(h — 1)(h — 2)... (h — n) «.+1/1 л \h—1 ^ 1 — ^
—, v2 = xn+1(1 + 0x)h 1, v3 =
1 ■ 2 ■... ■ n
1 + 0x
для 0 Є (0,1). Очевидно, что |VI| < п + 1. Так как 1 + 9х > 1 — 9 при
х > —1, то |^з| < 1 для таких х. Рассмотрим выражение V2 для х из отрезка
[— 1 — 2-5, 2-5]. Второй множитель из V2 преобразуем к виду
(1 + 9х)^-1 = (1 + 9х)(1 + 9х)^-2 = (1 + 9х)
(1 + 0х)
2-h
Так как 2 — h > 1, то выражение (1 + 0x)2 h больше величины (1 — 17 ■ 2 5)3. Поэтому
(1 + 0х)
h-1
<
33
І5
25
15
< 24
и для модуля V2 верна оценка сверху:
I v21 <
17
25
n+1
■ 24 < 2(n+1)(4.1-5) 24 = 2-°-9(™+1)+4
Следовательно, для остаточного члена выполняется соотношение |rn(x)| < < 2-Z(n), где Z(n) = 0.9(n + 1) — 4 — log2(n + 1), т.е. ряд (12) линейно сходится на отрезке [—2 — 2-5, 2-5]. Если в качестве bi ряда (4) взять h-i+1, а bo = 1, то будут верны условия (7). Поэтому приближения биномиального ряда можно вычислять в пределах LINSPACE на этом отрезке с помощью алгоритма PartialSum. При этом ^(n + 1) нужно брать по формуле
^(n + 1) = 2(n + 5),
(13)
3
так как тогда
с (М« + 1)) = 0.9(2(п + 5) + 1) — 4 — ^2(2(п + 5) + 1) =
= 1.8« + 9.9 — 4 — ^2(2п + 11) =
= (п + 1) + (0.8« + 4.9 — к^2(2п + 11)) > п + 1,
и поэтому |г^(га+1)| < 2-(п+1).
Для расчёта ряда (12) на произвольном отрезке воспользуемся мультипликативной редукцией интервала. Для этого введём величину и', равную , где и — обозначение для 1 + х, г — целое число. Значение г подберем так, чтобы и' € [1 — 2-5, 1 + 2-5); далее будет видно, что такое г подобрать гможно. Тогда значение х', равное и' — 1, будет в интервале [—^ — 2-5, 2-5), который обозначим через а(5). Выражение (1 + х)^ сведем к двум множителям:
, Г "I Г
и^ = (и'2Г)Л = (и')Л(2Г)Л = (и')Л(2^)Г = (и')к (2-1 )—^ . (14)
Второй множитель в последнем выражении удобно вычислять для положительных г. Поэтому если г > 0, то положим £ = (2-1 )-^, а если г < 0, то положим £ = (2-1)+^ (£ = 1 при г = 0). Тогда
+г
и^ = ад
(2-1 )—^ = ад ■ £+Г или и^ = ад ■ (2-1 )+^
— Г
= ад ■ £—Г
в зависимости от знака г, где ад = (и')^. Величину ад будем вычислять как значение биномиального ряда для х' € 0"(5), а величину £ — как значение биномиального ряда для х = — 1 и затем возводить в степень |г|.
Найдём точность 2—и вычисления аргумента х и точность 2—тз вычисления £ для расчёта значения ряда (12) по формуле (14) с точностью 2—(п+1) и последующим округлением до точности 2—п в соответствии с (3).
Точность вычисления аргументов х, у операции умножения, достаточная для получения произведения с точностью 2—(п+1), равна 2—(га+<?+2) [4], где д таково, что |х| +1 < 29, |у| + 1 < 29. Так как ад < 3 для х' € а(5), £|г| <
< 2|г|, то для расчёта выражения (14) с точностью 2—(п+1) достаточно знать множители ад, £|г| с точностью 2—т1, где
т1 = п + д + 2, д = тах(2, |г| + 1). (15)
Следовательно, значение х' нужно вычислять с точностью 2—т2, где Ш2 расчитывается по формуле (10) для к1 = ^(ш1 + 1), к2 = т1 + 1, а ^(ш1 + 1) находится по формуле (13). Так как при сложении с константой (х' = и' — 1) точность не уменьшается, то и' нужно вычислять также с точностью 2—т2.
Пусть х* —приближение х, и* —величина 1 + х*, (и')* —величина Цт. Введём обозначения:
■и< = т2 + |г|, -и> = тах(т2 — |г|, 0).
Рассмотрим отдельно случаи, когда г < 0 и г > 0 ((и')* = и* для г = 0). Если г < 0, то х достаточно знать с точностью 2—, так как
|(и' )* — и' | =
1 + х* 1 + х
= — |х* — х| < 2—т2. 2Г
2
2
Г
Г
Аналогично, если г > 0, то х достаточно знать с точностью 2—. Для обоих случаев знака г подойдет значение V = тах(^<,^>) = Ш2 + |г|.
Приближенные значения аргумента конструктивной функции являются двоично-рациональными числами, а такие числа имеют конечное двоичное представление. Поэтому для расчета (и')* будем сдвигать битовое представление и* так, чтобы старший значащий бит оказался сразу после двоичной точки (т. е. (и')* = 0.1...). Если и* ^ 1, то г будет такое, что г > 0, иначе г ^ 0. При этом (и')* € , 1), а величина и' будет в интервале — 2—5, 1 + 2—5),
так как точность расчета приближения (и')* не ниже 2—5 (из формулы для и).
Здесь возникает некоторая сложность, состоящая в том, что для вычисления х* нужна величина сдвига, которую можно узнать только после расчета и* = 1 + х* . Поэтому предположим, что
х ^ —1 + 2—р и х < 2Р — 2
для некоторого натурального р ^ 1. Тогда для х* = ф(и) из (2) получаем следующие соотношения, которые выполняются при и ^ р +1:
ф(и) ^ —1 + 2—р — 2—(р+1) = —1 + 2—(р+1) и ф(и) ^ 2Р — 2 + 2—(р+1) < 2Р — 1,
поэтому и* ^ 2—(р+1) и и* < 2Р. Величина (и')* получается сдвигом и* на г битов. Если г < 0, то 1 > (и')* ^ 2—(р+1)+|г|, и для г будет выполняться (р + 1) — |г| > 0, т. е. |г| < р + 1. В случае г > 0 будет 2—1 ^ (и')* < 2Р—Г, и тогда р — г > —1, т. е. г < р + 1. Следовательно, всегда г такое, что |г| < р + 1 для р ^ 1, и в качестве и достаточно взять Ш2 + р. В этом случае количество битов после двоичной точки величины (и')* не будет превышать Ш2 + 2р + С. Из (15) также заметим, что Ш1 достаточно рассчитывать по формуле п + р + 3.
Далее, покажем, что для расчета выражения £|г| с точностью 2—т1 при последовательном умножении и округлении достаточно вычислить Шз по формуле Ш1 + 3|г|. Обозначим через 2 приближение величины Значение 2 будем рассчитывать по формулам
21 = £*, 2г+1 = 2£* + Кг+1 для г = 1, . . . , |г| — 1, (16)
где «¿+1 получаются округлением результата с точностью 2—тз аналогично (6), т.е. |«¿+11 < 2—тз. Предварительно заметим, что верна оценка 12^| < 23г. И действительно, выполняются неравенства
ы < |£| + 2—тз, |2г+11 < |2»| (|£| + 2—тз0 + |кт|,
то есть
|21| < 23, |^¿+11 < 23г(2 + 2—т3)+2—тз < 23(*+1),
откуда и следует по принципу математической индукции, что |21 < 23г для произвольного г. Теперь рассмотрим погрешность расчета £г, которую обозначим через ¿¿, т. е. ¿г = 2 — £г. Предположим, что ^| ^ 2—тз+3(г—1). Для г = 1 данное соотношение выполняется: ¿1 ^ 2—тз. Рассмотрим погрешность
й+1 для (i + 1) ^ |z*+1 — t*+1
т. е. индукционное предположение подтверждается. Следовательно, если взять тз = mi + 3|r|, то |zr — t|r|| < 2-mi, и поэтому приближение t|r| с точностью 2-mi по формулам (16) будет искомым.
В результате получаем следующий алгоритм.
Алгоритм BinomSeriesValue. Приближенное значение (1 + x)h.
Вход: Запись точности вычисления 2-n.
Оракульная функция: ф для аргумента ж.
Параметры: Константа р.
Выход: Приближенное значение (1 + x)h с точностью 2-n.
Описание:
1) вычисляем m1 := n + р + 3;
2) вычисляем ki := 2(т1 + 5) и k2 := т1 + 1;
3) находим т2 := m(k1,k2) по формуле (10);
4) вычисляем и := т-2 + р;
5) рассчитываем ф := ф(и);
6) вычисляем u := 1 + ф;
7) определяем г:
а) если u < 1, то г ^ 0,
б) если u ^ 1, то г > 0;
8) сдвигая битовое представление u на г позиций влево или вправо в зависимости от знака г, получаем u;;
9) вычисляем ж; := u; — 1;
10) используем алгоритм PartialSum для вычисления приближенного значения w с точностью 2-mi;
11) находим т3 := т1 + 3|г|;
12) используем алгоритм PartialSum для расчета приближенного значения t с точностью 2-тз;
13) вычисляем /1 := t|r| с точностью 2-mi;
14) вычисляем /2 := w ■ /1;
15) на выход записываем двоичное представление /2, округленное в соответствии с (3).
Учитывая свойства алгоритма PartialSum, а также линейную зависимость m1, m-2 и m-з от n, получаем, что объем промежуточной памяти будет ограничен сверху линейной функцией от n. Очевидно также, что все вычисления будут полиномиальными по времени.
Теорема. Вещественная функция /(ж) = (1 + x)h для рационального h, |h| < 1, является LINSPACE конструктивной на любом отрезке [—1 + 2-p, 2p — 2], где р — натуральное число, р ^ 1.
Заключение. Алгоритм BinomSeriesValue (вместе с алгоритмом PartialSum) можно применять в информатике как основу LINSPACE конструктивной вещественной функции /(ж) = (1 + x)h, заданной на множестве LINSPACE
2:
1 = |z*t+ + ^¿+1 — t%t\ =
^ |zit+ — zit| + |zit — +| ^¿+1| =
= |zi| ' |t+ — t| + |zi — ^ ' |t| + |кг+1| <
< 23*2-™з + 2-тз +3(4-1) 2 + 2-тз =
= 2-тз (23* + 23(i-1)+1 + 1) < 2-тз23*4 < 2-тз23(*+1)
конструктивных вещественных чисел. Предложенные алгоритмы не являются оптимальными по времени выполнения, но для построения LINSPACE вычислимого математического анализа важна принципиальная возможность построения линейных по памяти алгоритмов.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Ko, K. Complexity Theory of Real Functions [Text] / K. Ko — Boston: Birkhauser, 1991. — 309 p.
2. Du, D. Theory of Computational Complexity [Text] / D. Du, K. Ko — New York: John Wiley & Sons, 2000. —491 p.
3. Фихтенгольц, Г. М. Курс дифференциального и интегрального исчисления [Текст] / Г.М. Фихтенгольц — М.: Физматлит, 2003. Т. 2.—864 с.
4. Шурыгин, В. А. Основы конструктивного математического анализа [Текст] / В. А. Шу-рыгин. — М.: Едиториал УРСС, 2004. — 328 с.
Поступила в редакцию 01 /III/2008; в окончательном варианте — 10/VII/2008.
MSC: 68Q25
LINSPACE CONSTRUCTIVE ANALOGUE OF (1 + x)h FUNCTION
S. V. Yakhontov
St. Petersburg State University, Dept. of Mathematics and Mechanics 198504, St. Petersburg, Staryy Petergoff, Universitetskii prosp., 28.
E-mails: sergey_home_mail@inbox.ru, ysv@tercom.ru
Algorithms of class FLINSPACE are constructed in order to calculate the arbitrary precision of (1 + x)h function with the help of Taylor expansion. This function is analyzed with the multitude of constructive real numbers, that is, the algorithms calculating rational approximations are used as x argument.
Key words: rational approximations, algorithms, closeness.
Original article submitted 01/III/2008; revision submitted 10/VII/2008.
Yakhontov Sergey Viktorovich, Senior Lecturer, Dept. of Mathematics and Mechanics (Computer Science chair) of St. Petersburg State University.