Каковы эффективные, точные алгоритмы для оценки гипергеометрических функций?


16

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

pFq(a1,,ap;b1,,bq;z)=k=0(a1)k(ap)k(b1)k(bq)kzkk!

В общем, этот ряд не обязательно будет сходиться очень быстро (или вообще), поэтому суммирование терминов по одному кажется не идеальным. Есть ли альтернативный метод, который работает лучше? Если быть точным, я ищу что-то, что даст 4 или 5 цифр точности с разумным количеством вычислений.

Наиболее распространенные случаи, которые я обычно вижу, это и , но в конкретном проекте, над которым я работаю, мне нужно . Очевидно, что общий алгоритм для любых и идеален, но я возьму то, что смогу получить.p=1,q=1p=2,q=1p=1,q=2pq


Если ваше дело не отражено в «Справочнике Абрамовица и Стегуна» ( people.math.sfu.ca/~cbm/aands/subj.htm ), а это не так, вы, по сути, обречены выяснить это самостоятельно, я боюсь ...
Хайме

Ответы:


15

В одном приложении весьма вероятно, что вам понадобится лишь небольшое подмножество всех возможных крайностей обобщенной гипергеометрической функции. В конце концов, это очень общая функция. Имея представление о диапазоне и параметрах позволит дать более конкретный совет.a i , b izai,bi

В общем, стандартный метод, предполагающий , конечно, использует определяющий степенной ряд, когдамаленький. Если , то лучше перейти к асимптотическому разложению, когдавелика либо потому, что ряд Тейлора сходится слишком медленно, и / или потому, что он становится слишком неточным из-за катастрофической отмены. Наилучшее ограничение между этими алгоритмами зависит от параметров и требований к точности.| z | р < q + 1 | z |pq+1|z|p<q+1|z|

Для асимптотический ряд задается http://functions.wolfram.com/HypergeometricFunctions/Hypergeometric1F2/06/02/03/ Это выглядит довольно ужасно, но если ваши исправлены, вы можете вычислить числовое значение Значения для коэффициентов заранее. Общие формулы можно найти в DLMF: http://dlmf.nist.gov/16.11 (Обратите внимание, что для выбора правильных срезов ответвления требуется некоторая осторожность.)a 1 , b 1 , b 21F2a1,b1,b2

Если существует диапазон, в котором ни ряд Тейлора, ни асимптотический ряд не работают достаточно хорошо, «экспоненциально улучшенные разложения» могут быть полезны. Другая возможность, о которой стоит упомянуть, это то, что вы можете просто подключить гипергеометрическое дифференциальное уравнение к универсальному решателю ODE. Это должно работать довольно хорошо, особенно если вам нужно только 4-5 цифр. Это может быть использовано для аналитического продолжения от малого (где степенной ряд работает хорошо) к большему или наоборот от значения, полученного с помощью асимптотического ряда (вам может потребоваться немного больше работы, чтобы получить все производные нужны в качестве начальных значений).z

Если вам нужны функции с на всей комплексной плоскости, то формулы преобразования можно использовать для сопоставления внешнего вида единичного диска с внутренним. Некоторые алгоритмы ускорения сходимости или другие методы, такие как численное интегрирование ОДУ, должны использоваться рядом с единичной окружностью. Если радиус сходимости равен нулю, поэтому, если функция, которую вы хотите оценить, задается таким расходящимся рядом, вам может потребоваться применить преобразование Бореля (числовое или символическое), чтобы свести его к сходящемуся ряду.1 / z p > q + 1p=q+11/zp>q+1

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

Я должен отметить, что я написал почти полную численную реализацию обобщенной гипергеометрической функции для библиотеки mpmath (в настоящее время в ней отсутствуют асимптотические ряды для функций выше, чем ), что может быть полезно для изучения или запуска тестов (при условии, что это не достаточно быстро уже для ваших целей).2F3


Отлично! К сожалению, я не могу получить более конкретную информацию о значениях параметров, потому что функция появляется во многих местах с различными значениями. Я определенно буду заинтересован в использовании и / или рассмотрении вашей реализации в mpmath в какой-то момент.
Дэвид З

1
Фредрик ответ правильный. Я хотел бы только отметить, что я использовал рациональное приближение (из Mathematica) для специальных значений коэффициентов «a» и «b», потому что оно точно для всех реальных «z» (я разбил действительную ось на интервалы и использовал разные рациональные приближения на каждом) и очень быстро. Я использовал mpmath для проверки точности моей реализации с двойной точностью в Фортране.
Ондржей Чертик

2

Каноническая ссылка для всех специальных функций - Абрамович и Стегун. Эта книга существует уже около полувека, и если в ней есть что-то, чего вы не можете найти, взгляните на «обновленное второе издание», которое на самом деле является веб-сайтом, организованным Национальным институтом стандартов (NIST). ). У меня нет точного URL, но это не должно быть очень трудно найти.


2
Теперь она называется «Электронная библиотека математических функций»; гипергеометрические функции являются предметом главы 15 .
Кристиан Клэйсон

1
Глава в A & S о гипергеометрической функции на самом деле о , а не о о котором спрашивает ОП ...1 F 22F11F2
Хайме
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.