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

Python 涉及正态变量累积分布函数的极限,python,sympy,calculus,Python,Sympy,Calculus,我正在做一些关于不恰当积分的练习,我偶然发现了一个我无法解决的问题。我试图对以下问题使用limit()函数: 这里N(x)是标准正态变量的累积分布函数 到目前为止,limit()函数没有引起任何问题,包括需要应用L'Hôpital规则的问题。然而,对于这个特殊的问题,我正在努力计算出正确的答案,却不知道为什么。下面的代码产生了一个不正确的答案 from sympy import * x, y = symbols('x y') init_printing(use_unicode=False)

我正在做一些关于不恰当积分的练习,我偶然发现了一个我无法解决的问题。我试图对以下问题使用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()函数解决此问题

目前,只有当
erf
的参数趋于正无穷大时,才能计算涉及函数
erf
的极限(称为,与正常CDF相关)。其他位置的限值要么未评估,要么评估不正确。(). 这包括限制

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))

在微积分实践中,当涉及算法计算时,L'Hopital规则不如幂级数技术,SymPy主要依赖后者。它使用的算法由Dominik Gruntz设计和解释