Метод БВЕ

Материал из testwiki
Перейти к навигации Перейти к поиску

Метод БВЕ (быстрого вычисления E-функций) — метод быстрого суммирования специального вида рядов. Построен в 1990 году Е. А. Карацубой[1][2]. Позволяет вычислять быстро зигелевские E-функции, и в частности, ex.

Зигель назвал «E-функциями» класс функций, «похожих на экспоненциальные». Этому классу принадлежат такие высшие трансцендентные функции как гипергеометрические, сферические, цилиндрические функции и так далее.

Теорема

С помощью БВЕ можно доказать следующую теорему

Теорема.

Пусть y=f(x) — простейшая трансцендентная функция, то есть экспоненциальная функция или тригонометрическая функция, или элементарная алгебраическая функция, или их суперпозиция, или обратная им функция или суперпозиция обратных функций. Тогда

sf(n)=O(M(n)log2n).

Здесь sf(n) есть сложность вычисления (битовая) функции f(x) с точностью до n знаков, M(n) — сложность умножения двух n-значных чисел.

Алгоритмы, основанные на БВЕ, включают алгоритмы быстрого вычисления любой элементарной трансцендентной функции для любого аргумента, классических констант e, π, постоянной Эйлера γ, постоянных Апери[3] и Каталана, таких высших трансцендентных функций, как гамма-функции Эйлера и её производных, гипергеометрических функций[4], сферических функций, цилиндрических функций[5] и так далее для алгебраических значений аргумента и параметров, дзета-функции Римана для целых значений аргумента[6][7], дзета-функции Гурвица для целого аргумента и алгебраических значений параметра[8], а также таких специальных интегралов[9], как интеграл вероятности, интегралы Френеля, интегральная экспоненциальная функция, интегральные синус и косинус и так далее при алгебраических значениях аргумента с оценкой сложности вычисления, близкой к оптимальной, а именно sf(n)=O(M(n)log2n).

В настоящее время только метод БВЕ даёт возможность быстро вычислять значения функций из класса высших трансцендентных функций[10], некоторые специальные интегралы математической физики и такие классические константы, как константы Эйлера, Каталана[11] и Апери. Дополнительным преимуществом метода БВЕ является возможность распараллеливания основанных на БВЕ алгоритмов.

БВЕ-вычисление классических констант

Для быстрого вычисления константы π можно воспользоваться формулой Эйлера π4=arctg12+arctg13, и применить БВЕ к суммированию рядов Тейлора для

arctg12=11⋅2−13⋅23+…+(−1)r−1(2r−1)22r−1+R1,

arctg13=11⋅3−13⋅33+…+(−1)r−1(2r−1)32r−1+R2,

с остаточными членами R1, R2, для которых справедливы оценки

|R1|⩽4512r+1122r+1;

|R2|⩽91012r+1132r+1;

и при

r=n,

4(|R1|+|R2|) < 2−n.

Чтобы вычислить π посредством БВЕ, можно использовать также другие приближения[12]. Во всех случаях сложность

sπ=O(M(n)log2n).

Чтобы вычислить постоянную Эйлера γ с точностью до n знаков, нужно просуммировать с помощью БВЕ два ряда. А именно, при m=6n, k=n, k⩾1,

γ=−log⁡n∑r=012n(−1)rnr+1(r+1)!+∑r=012n(−1)rnr+1(r+1)!(r+1)+O(2−n).

При этом

sγ=O(M(n)log2n).

Для быстрого вычисления константы γ можно также применить метод БВЕ к другому приближению[13]

БВЕ-вычисление некоторых степенных рядов

С помощью БВЕ можно вычислить быстро следующие два вида рядов:

f1=f1(z)=∑j=0∞a(j)b(j)zj,

f2=f2(z)=∑j=0∞a(j)b(j)zjj!,

при условии, что a(j), b(j) — целые числа, |a(j)|+|b(j)|⩽(Cj)K; |z|<1; K и C есть константы, и z есть алгебраическое число.

Сложность вычисления этих рядов

sf1(n)=O(M(n)log2n),

sf2(n)=O(M(n)log⁡n).

Детали БВЕ на примере быстрого вычисления константы e

Для вычисления константы e возьмём m=2k,k⩾1, членов ряда Тейлора для e,

e=1+11!+12!+…+1(m−1)!+Rm.

При этом выбираем m так, чтобы для остатка Rm выполнялось неравенство Rm⩽2−n−1. Это будет, например, когда m⩾4nlog⁡n. Таким образом, возьмем m=2k таким, что натуральное число k определяется неравенствами:

2k⩾4nlog⁡n>2k−1.

Будем вычислять сумму S=1+11!+12!+…+1(m−1)!=∑j=0m−11(m−1−j)!,

за k шагов следующего процесса.

Шаг 1. Объединяя слагаемые S последовательно попарно и вынося за скобки «очевидный» общий множитель, получаем

S=(1(m−1)!+1(m−2)!)+(1(m−3)!+1(m−4)!)+…=

=1(m−1)!(1+m−1)+1(m−3)!(1+m−3)+…

Будем вычислять только целые значения выражений, стоящих в скобках, то есть значения m, m−2, m−4, …

Таким образом, на первом шаге сумма S преобразуется к виду

S=S(1)=∑j=0m1−11(m−1−2j)!αm1−j(1),

m1=m2, m=2k, k⩾1.

На первом шаге вычисляется только m2 целых чисел вида

αm1−j(1)=m−2j,j=0,1,…,m1−1,

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

Шаг i+1 (i+1⩽k).

S=S(i+1)=∑j=0mi+1−11(m−1−2i+1j)!αmi+1−j(i+1),

mi+1=mi2=m2i+1,

мы вычисляем только m2i+1 целых чисел вида

αmi+1−j(i+1)=αmi−2j(i)+αmi−(2j+1)(i)(m−1−2i+1j)!(m−1−2i−2i+1j)!,

j=0,1,…,mi+1−1,m=2k,k⩾i+1.

Здесь (m−1−2i+1j)!(m−1−2i−2i+1j)! есть произведение 2i целых чисел.

И так далее.

Последний, k-й шаг. Вычисляем одно целое значение α1(k), вычисляем, пользуясь вышеописанным быстрым алгоритмом, значение (m−1)!, и производим одно деление целого числа α1(k) на число (m−1)! с точностью до n знаков. Получившийся результат и есть сумма S, или константа e с точностью до 2−n. Сложность всех вычислений есть

O(M(m)log2m)=O(M(n)log⁡n).

Примечания

Шаблон:Примечания

Ссылки

Шаблон:Rq

  1. ↑ Карацуба Е. А. Быстрое вычисление трансцендентных функций. Проблемы передачи информации, т. 27, № 4 (1991).
  2. ↑ Lozier D. W. and Olver F. W. J. Numerical Evaluation of Special Functions. Mathematics of Computation 1943—1993: A Half-Century of Computational Mathematics, W. Gautschi, eds., Proc. Sympos. Applied Mathematics, AMS, Vol. 48 (1994).
  3. ↑ Карацуба Е. А. Быстрое вычисление ζ(3). Проблемы передачи информации, т. 29, № 1 (1993).
  4. ↑ Karatsuba Ekatharine A. Fast evaluation of hypergeometric function by FEE. Computational Methods and Function Theory (CMFT’97), N. Papamichael, St. Ruscheweyh and E. B. Saff, eds., World Sc. Pub. (1999).
  5. ↑ Karatsuba Catherine A. Fast evaluation of Bessel functions. Integral Transforms and Special Functions, Vol. 1, № 4 (1993).
  6. ↑ Карацуба Е. А. Быстрое вычисление дзета-функции Римана ζ(s) для целых значений аргумента s. Проблемы передачи информации, т. 31, № 4 (1995).
  7. ↑ Borwein J. M., Bradley D. M. and Crandall R. E. Computational strategies for the Riemann zeta function. J. of Comput. Appl. Math., Vol. 121, № 1-2 (2000).
  8. ↑ Карацуба Е. А. Быстрое вычисление дзета-функции Гурвица и L-рядов Дирихле. Проблемы передачи информации, т. 34, № 4 (1998).
  9. ↑ Karatsuba E. A. Fast computation of some special integrals of mathematical physics. Scientific Computing, Validated Numerics, Interval Methods, W. Kramer, J. W. von Gudenberg, eds. (2001).
  10. ↑ Bach E. The complexity of number-theoretic constants. Info. Proc. Letters, № 62 (1997).
  11. ↑ Karatsuba E. A. Fast computation of ζ(3) and of some special integrals, using the polylogarithms, the Ramanujan formula and it’s generalization. J. of Numerical Mathematics BIT, Vol. 41, № 4 (2001).
  12. ↑ Bailey D. H., Borwein P. B. and Plouffe S. On the rapid computation of various polylogarithmic constants. Math. Comp., Vol. 66 (1997).
  13. ↑ Brent R. P. and McMillan E. M. Some new algorithms for high-precision computation of Euler’s constant. Math. Comp., Vol. 34 (1980).