如何计算逆高斯CDF的导数?

2024-10-01 00:33:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图计算函数rc()w.r.tmuk的一阶和二阶导数,它们是逆高斯分布的参数。我试图使用SymPy(我试图用Mathematica找到导数并在代码中实现它们,但我得到的表达式90%的时间导致溢出问题)

from sympy.stats import GaussianInverse, cdf
from sympy import Symbol, log, diff

t = Symbol("t", positive=True)
mu = Symbol("mu", positive=True)
k = Symbol("k", positive=True)
    
def rc(t,mu,k):
    return -1*log(1-cdf(GaussianInverse(t, mu, k)))

def drck(t,mu,k):
    return diff(rc(t,mu,k),k)

def drcmu(t,mu,k):
    return diff(rc(t,mu,k),mu)

def drckk(t,mu,k):
    return diff(rc(t,mu,k),k,k)

def drcmumu(t,mu,k):
    return diff(rc(t,mu,k),mu,mu)

def drckmu(t,mu,k):
    return diff(rc(t,mu,k),k,mu)

我应该使用700 < k < 1700 0.5 < mu < 1.5的值

因为我是新来的,我想知道

  • 我计算导数的方法正确吗?代码似乎“起作用”,但我不能真正理解如何在例如k = 1500, mu = 1.1处计算这个导数
  • 如果我遇到其他溢出问题/数值问题,处理此类问题最安全的方法是什么?我可以用有限差分法等方法近似该值吗

Tags: 方法代码fromimporttruereturndefdiff