在 mpmath 中集成函数

问题描述

对数积分函数 def Li(x) 得到的结果让我感到困惑。好的,由于 log 1 = 0,在 +1 处有一个奇点,所以我希望为任何 x 定义区间 [0,x] 会导致问题,并得出结论我应该从下限 1.451369 开始......,所谓的Soldner's Constant,奇点左右区域相互抵消的点,我们得到了上限 x 的正确积分。事实证明,间隔 [0,2] 会引发错误,但通常可以接受 [0,x],但 Li(x)[0,x][1.451369,x] 不同。为什么?看看 Li(3) 的计算值是什么???

from mpmath import mp
mp.dps = 10
def Li(x):
    return 1/mp.log(x)

soldnerConstant = mp.mpf(1.451369)

x = 2

##I = mp.quad(Li,[0,x])
##print('Li(',x,') = ',I,sep = "")

I = mp.quad(Li,[soldnerConstant,x])
print('Li(',sep = "")

x = 3
I = mp.quad(Li,sep = "")

x = 1000000
I = mp.quad(Li,sep = "")
Type "help","copyright","credits" or "license()" for more information.
>>> 
======= RESTART: C:/Python/_StackOverflow/Python_StackOverflow #002_01.py ======
Li(2) = 1.045164411
Li(3) = 119.0703323
Li(3) = 2.163589225
Li(1000000) = 78601.94956
Li(1000000) = 78627.54916
>>> 

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)