scipy.special.hyp2f1#

scipy.special.hyp2f1(a, b, c, z, выход=None) = 'hyp2f1'>#

Гипергеометрическая функция Гаусса 2F1(a, b; c; z)

Параметры:
a, b, carray_like

Аргументы должны быть вещественными.

zarray_like

Аргумент, вещественный или комплексный.

выходndarray, необязательно

Необязательный выходной массив для значений функции

Возвращает:
hyp2f1скаляр или ndarray

Значения гауссовой гипергеометрической функции.

Смотрите также

hyp0f1

вырожденная гипергеометрическая предельная функция.

hyp1f1

Функция Куммера (вырожденная гипергеометрическая).

Примечания

Эта функция определена для \(|z| < 1\) как

\[\mathrm{hyp2f1}(a, b, c, z) = \sum_{n=0}^\infty \frac{(a)_n (b)_n}{(c)_n}\frac{z^n}{n!},\]

и определена на остальной части комплексной z-плоскости с помощью аналитического продолжения [1]. Здесь \((\cdot)_n\) это символ Похгаммера; см. poch. Когда \(n\) является целым числом, результат - полином степени \(n\).

Реализация для комплексных значений z описан в [2], за исключением z в области, определенной

\[0.9 <= \left|z\right| < 1.1, \left|1 - z\right| >= 0.9, \mathrm{real}(z) >= 0\]

в котором реализация следует [4].

Ссылки

[1]

NIST Digital Library of Mathematical Functions https://dlmf.nist.gov/15.2

[2]
  1. Чжан и Дж.М. Джин, «Вычисление специальных функций», Wiley 1996

[3]

Библиотека математических функций Cephes, http://www.netlib.org/cephes/

[4]

J.L. Lopez и N.M. Temme, «New series expansions of the Gauss hypergeometric function», Adv Comput Math 39, 349-365 (2013). https://doi.org/10.1007/s10444-012-9283-y

Примеры

>>> import numpy as np
>>> import scipy.special as sc

Он имеет полюсы, когда c является отрицательным целым числом.

>>> sc.hyp2f1(1, 1, -2, 1)
inf

Это полином, когда a или b является отрицательным целым числом.

>>> a, b, c = -1, 1, 1.5
>>> z = np.linspace(0, 1, 5)
>>> sc.hyp2f1(a, b, c, z)
array([1.        , 0.83333333, 0.66666667, 0.5       , 0.33333333])
>>> 1 + a * b * z / c
array([1.        , 0.83333333, 0.66666667, 0.5       , 0.33333333])

Он симметричен относительно a и b.

>>> a = np.linspace(0, 1, 5)
>>> b = np.linspace(0, 1, 5)
>>> sc.hyp2f1(a, b, 1, 0.5)
array([1.        , 1.03997334, 1.1803406 , 1.47074441, 2.        ])
>>> sc.hyp2f1(b, a, 1, 0.5)
array([1.        , 1.03997334, 1.1803406 , 1.47074441, 2.        ])

Он содержит многие другие функции как частные случаи.

>>> z = 0.5
>>> sc.hyp2f1(1, 1, 2, z)
1.3862943611198901
>>> -np.log(1 - z) / z
1.3862943611198906
>>> sc.hyp2f1(0.5, 1, 1.5, z**2)
1.098612288668109
>>> np.log((1 + z) / (1 - z)) / (2 * z)
1.0986122886681098
>>> sc.hyp2f1(0.5, 1, 1.5, -z**2)
0.9272952180016117
>>> np.arctan(z) / z
0.9272952180016122