其他分享
首页 > 其他分享> > 限制-涉及正态变量的累积分布函数的限制

限制-涉及正态变量的累积分布函数的限制

作者:互联网

我正在对不正确的积分进行一些练习,但偶然发现了一个我无法解决的问题.我正在尝试对以下问题使用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_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的限制(称为error function,与正常CDF相关).其他地方的限值未评估或评估错误. (Related 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)).

与微积分实践一样,在算法计算方面,L’Hopital的规则不如幂级数技术,而SymPy主要依靠后者.它使用的算法是由Dominik Gruntz在On Computing Limits in a Symbolic Manipulation System中设计和解释的.

标签:calculus,sympy,python
来源: https://codeday.me/bug/20191109/2011931.html