import math
from scipy.integrate import quad
def integrand(x):
return 1/math.log(x)
for i in range(1,13):
n = 10**i
I = quad(integrand, 1.45137, n)
print('Li(',n,') = ' ,I[0], ' Error bound = ', I[1], sep = "")
logarithmic integral function
위의 코드를 평가할 때 n
최대 1,000,000에 대해 충분한 정확도로 값을 반환 하면 정확도가 저하됩니다. 내 요구 사항에 1
대해 훨씬 더 큰 인수에 대해서도 오류 범위 를 훨씬 아래로 유지하고 싶습니다 10**12
. 나는 어떤 가시적 인 효과도없이 epsabs
및 limit
매개 변수로 실험했고, n
이것은 함수 값이 부동 소수점 하한 아래로 떨어지는 상황이 아니기 때문에 다 정밀 허위로 내 행운을 시도 할 가치가 없다고 생각했습니다. 누구에게 조언이 있습니까?
오류 허용치를 설정할 수 있습니다.
I = quad(integrand, 1.45137, n,epsrel = 1e-012)
산출:
Li(10) = 6.165597450825269 Error bound = 1.3760057428455556e-12
Li(100) = 30.126139530117598 Error bound = 3.845093652017017e-10
Li(1000) = 177.60965593619017 Error bound = 1.0048009489777205e-08
Li(10000) = 1246.1372138454267 Error bound = 2.5251966557222983e-11
Li(100000) = 9629.808998996832 Error bound = 4.4348515334357425e-10
Li(1000000) = 78627.54915740821 Error bound = 8.356797391525394e-09
Li(100000000) = 5762209.375445976 Error bound = 1.7291372054824457e-06
Li(1000000000) = 50849234.956999734 Error bound = 1.7689864637237228e-05
Li(10000000000) = 455055614.58662117 Error bound = 0.00014576268969193965
Li(100000000000) = 4118066400.621609 Error bound = 0.0009848731833003443
Li(1000000000000) = 37607950280.804855 Error bound = 0.01345062255859375
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다