涉及正态变量累积分布函数的极限问题

3
我正在做一些关于不定积分的练习,但我遇到了一个无法解决的问题。我试图在以下问题中使用limit()函数:
在这里N(x)是标准正态变量的累积分布函数。
到目前为止,limit()函数没有引起任何问题,包括需要应用L'Hôpital法则的问题。然而,我很难计算出这个特定问题的正确答案,也不知道原因。下面的代码给出了一个错误的答案。
from sympy import *

x, y = symbols('x y')
init_printing(use_unicode=False) #Print the answers in unicode characters

cum_distribution = (1/sqrt(2*pi)*(integrate(exp(-y**2/2), (y, -oo, x))))

func = (cum_distribution -(1/2)-(x/sqrt(2*pi)))/(x**3)

limit(func, x, 0)

如果我使用L'Hôpital法则,我可以得到正确的解答。
l_hopital = diff((cum_distribution -(1/2)-(x/sqrt(2*pi))), x)/diff(x**3, x)

limit(l_hopital, x, 0)

我查看了limit()函数的源代码,我的理解是没有应用L'Hôpital法则?在这种情况下,可以不使用此规则使用limit()函数来解决此问题吗?

1个回答

3

目前,涉及函数erf的极限(称为误差函数,与正态分布函数相关)只能在erf的参数趋于正无穷时进行评估。其他位置的极限要么不被评估,要么被错误地评估。(相关PR)。这包括以下极限:

limit(-(sqrt(2)*x - sqrt(pi)*erf(sqrt(2)*x/2))/(2*sqrt(pi)*x**3), x, 0)

该函数返回未求值的结果(虽然我不认为这是不正确的)。作为解决方法,您可以计算该函数的泰勒级数,只使用一个项(常数项),这将给出极限的正确值:
series(func, x, 0, 1).removeO()

返回结果为: -sqrt(2)/(12*sqrt(pi))

就微积分实践而言,当涉及到算法计算时,洛必达法则不如幂级数技巧有效,而SymPy主要依赖于后者。它使用的算法是由Dominik Gruntz在关于符号操作系统中计算极限中设计和解释的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接