줄리아, 79 77 38 바이트
I->sum(x->(e/x)^x,0:1e-5:min(I,9))/1e5
이것은 숫자 값을 받아들이고 float를 반환하는 익명 함수입니다. 호출하려면 변수에 지정하십시오.
여기서의 접근 방식은 적분을 근사하기 위해 올바른 Riemann 합계를 사용하는 것입니다.
우리의 경우, 입력 은 a = 0이고 b = I 입니다. 적분 영역을 n = 10 5 이산 부분 으로 나누 므로 ∆ x = 1 / n = 10 -5 입니다. 이것은 합계에 대한 상수이므로, 이것을 합계 밖으로 끌어 내고 각 지점에서 함수 평가를 간단히 합산하고 n으로 나눌 수 있습니다.
이 기능은 놀랍게도 잘 동작합니다 (Mathematica의 도표) :
함수가 9에 대한보다 거의 입력을위한 공에 더 큰 평가하기 때문에, 우리는로 입력을 절단 I를 하면 나는 그렇지 미만 9 또는 9입니다. 이를 통해 우리가해야 할 계산이 간단 해집니다.
Ungolfed 코드 :
function g(I)
# Define the range over which to sum. We truncate the input
# at 9 and subdivide the region into 1e5 pieces.
range = 0:1e-5:min(I,9)
# Evaluate the function at each of the 1e5 points, sum the
# results, and divide by the number of points.
return sum(x -> (e / x)^x, range) / 1e5
end
Dennis 덕분에 39 바이트를 절약했습니다!