Мне любопытно узнать, какие хорошие численные алгоритмы существуют для оценки обобщенной гипергеометрической функции (или ряда), определенной как
В общем, этот ряд не обязательно будет сходиться очень быстро (или вообще), поэтому суммирование терминов по одному кажется не идеальным. Есть ли альтернативный метод, который работает лучше? Если быть точным, я ищу что-то, что даст 4 или 5 цифр точности с разумным количеством вычислений.
Наиболее распространенные случаи, которые я обычно вижу, это и , но в конкретном проекте, над которым я работаю, мне нужно . Очевидно, что общий алгоритм для любых и идеален, но я возьму то, что смогу получить.
special-functions
Дэвид З
источник
источник
Ответы:
В одном приложении весьма вероятно, что вам понадобится лишь небольшое подмножество всех возможных крайностей обобщенной гипергеометрической функции. В конце концов, это очень общая функция. Имея представление о диапазоне и параметрах позволит дать более конкретный совет.a i , b iz ai,bi
В общем, стандартный метод, предполагающий , конечно, использует определяющий степенной ряд, когдамаленький. Если , то лучше перейти к асимптотическому разложению, когдавелика либо потому, что ряд Тейлора сходится слишком медленно, и / или потому, что он становится слишком неточным из-за катастрофической отмены. Наилучшее ограничение между этими алгоритмами зависит от параметров и требований к точности.| z | р < q + 1 | z |p≤q+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 21F2 a1,b1,b2
Если существует диапазон, в котором ни ряд Тейлора, ни асимптотический ряд не работают достаточно хорошо, «экспоненциально улучшенные разложения» могут быть полезны. Другая возможность, о которой стоит упомянуть, это то, что вы можете просто подключить гипергеометрическое дифференциальное уравнение к универсальному решателю ODE. Это должно работать довольно хорошо, особенно если вам нужно только 4-5 цифр. Это может быть использовано для аналитического продолжения от малого (где степенной ряд работает хорошо) к большему или наоборот от значения, полученного с помощью асимптотического ряда (вам может потребоваться немного больше работы, чтобы получить все производные нужны в качестве начальных значений).z
Если вам нужны функции с на всей комплексной плоскости, то формулы преобразования можно использовать для сопоставления внешнего вида единичного диска с внутренним. Некоторые алгоритмы ускорения сходимости или другие методы, такие как численное интегрирование ОДУ, должны использоваться рядом с единичной окружностью. Если радиус сходимости равен нулю, поэтому, если функция, которую вы хотите оценить, задается таким расходящимся рядом, вам может потребоваться применить преобразование Бореля (числовое или символическое), чтобы свести его к сходящемуся ряду.1 / z p > q + 1p=q+1 1/z p>q+1
Для полной реализации необходимо рассмотреть и другие вопросы (например, работа с параметрами, которые чрезвычайно велики или очень близки к отрицательным целым числам). Для достаточно плохих параметров будет очень трудно получить точные значения с двойной точностью, независимо от того, что вы делаете, поэтому может потребоваться арифметика с произвольной точностью.
Я должен отметить, что я написал почти полную численную реализацию обобщенной гипергеометрической функции для библиотеки mpmath (в настоящее время в ней отсутствуют асимптотические ряды для функций выше, чем ), что может быть полезно для изучения или запуска тестов (при условии, что это не достаточно быстро уже для ваших целей).2F3
источник
Каноническая ссылка для всех специальных функций - Абрамович и Стегун. Эта книга существует уже около полувека, и если в ней есть что-то, чего вы не можете найти, взгляните на «обновленное второе издание», которое на самом деле является веб-сайтом, организованным Национальным институтом стандартов (NIST). ). У меня нет точного URL, но это не должно быть очень трудно найти.
источник