Python Scipy:ellipk和ellipkm1之间的差异
我想知道scipy特殊模块中的函数ellipk和ellipkm1之间有什么区别 通过文档,我们了解到ellipk计算第一类椭圆积分,ellipkm1计算相同的积分,但参数约为1 然后绘制下图,请参见 最后,我不知道从哪个值我们必须使用ellipkm1而不是ellipk 有人有答案吗Python Scipy:ellipk和ellipkm1之间的差异,python,scipy,Python,Scipy,我想知道scipy特殊模块中的函数ellipk和ellipkm1之间有什么区别 通过文档,我们了解到ellipk计算第一类椭圆积分,ellipkm1计算相同的积分,但参数约为1 然后绘制下图,请参见 最后,我不知道从哪个值我们必须使用ellipkm1而不是ellipk 有人有答案吗 谢谢。从数学上讲,ellipkm1(x)相当于ellipk(1-x)ellipkm1用于计算值非常接近1的函数。例如,假设您希望在x=1-1e-30处计算ellipk。实际上,您不能,因为对于双精度浮点,1-1e-3
谢谢。从数学上讲,
ellipkm1(x)
相当于ellipk(1-x)
ellipkm1
用于计算值非常接近1的函数。例如,假设您希望在x=1-1e-30
处计算ellipk
。实际上,您不能,因为对于双精度浮点,1-1e-30
等于1
,所以ellipkm(1-1e-30)
将返回inf
。相反,在1e-30
处评估ellipkm1
In [30]: eps = 1e-30
In [31]: 1 - eps # eps is smaller than 1 ULP, so 1-eps == 1.
Out[31]: 1.0
In [32]: ellipk(1 - eps) # Of course, this gives inf.
Out[32]: inf
In [33]: ellipkm1(eps) # This is the value we want.
Out[33]: 35.925070756030571
下面是计算1-1e-30
处积分的演示
In [30]: eps = 1e-30
In [31]: 1 - eps # eps is smaller than 1 ULP, so 1-eps == 1.
Out[31]: 1.0
In [32]: ellipk(1 - eps) # Of course, this gives inf.
Out[32]: inf
In [33]: ellipkm1(eps) # This is the value we want.
Out[33]: 35.925070756030571