我想知道scipy特殊模块中函数ellipk和ellipkm1之间有什么区别。
通过文档我们了解到,ellk计算第一种椭圆积分,而且ellkm1计算相同但参数大约为1。
然后我绘制了下图,请参阅here。
最后,我没有看到我们必须使用椭圆形而不是椭圆形。
有人有答案吗?
感谢。
答案 0 :(得分:1)
数学上,ellipkm1(x)
相当于ellipk(1-x)
。 ellipkm1
用于以非常接近1的值计算函数。例如,假设您要在ellipk
评估x = 1 - 1e-30
。实际上,你不能,因为双精度浮点数1 - 1e-30
等于1
,所以ellipkm(1 - 1e-30)
将返回inf
。相反,请在ellipkm1
评估1e-30
。
以下是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