def inv_psi(y, tol=1e-10, n_iter=100, psi=psi):
"""
Inverse digamma function
"""
from numpy import exp
from scipy.special import digamma
## initial value
if y < -5 / 3. - EULER_MASCHERONI:
x = -1 / (EULER_MASCHERONI + y)
else:
x = 0.5 + exp(y)
## Newton root finding
for dummy in range(n_iter):
z = digamma(x) - y
if abs(z) < tol:
break
x -= z / d_approx_psi(x)
return x
评论列表
文章目录