2016-11-15 2 views
2

저는 C++에서 임의의 정밀도 산술 라이브러리를 구현하고 있습니다. 감마 함수를 구현할 때 꽤 당황 스럽습니다. 균등 한 gamma(n) = gamma(n - 1) * ngamma(n) = gamma(n + 1)/n 사용함으로써임의 정밀도 감마 함수

각각 I는 모두 x 값의 범위에 (1; 2] 유리수 r를 얻을 수있다.

그러나 나는 gamma(r)을 어떻게 평가해야할지 모르겠다. Lanczos 근사치 (https://en.wikipedia.org/wiki/Lanczos_approximation)의 경우, 정수 값이 아닌 계승을 계산하는 사전 계산 된 값 p가 필요하며 (현재의 지식으로 동적으로 계산할 수는 없습니다 ...) p의 사전 계산 값은 그렇지 않습니다. 임의의 정밀도 라이브러리를 구현할 때 많은 의미가 있습니다.

임의의 정밀도로 적절한 시간 내에 gamma(r)을 계산하는 알고리즘이 있습니까? 당신의 도움을 주셔서 감사합니다.

+0

나는 http://functions.wolfram.com/GammaBetaErf/Gamma/introductions/Gamma/05/을 공부했으며 필요한 것을 찾지 못했다고 생각합니다. –

+0

프로그래밍보다 수학과 관련이있는 것처럼 보입니다. 아마도 질문을 게시하는 것이 좋습니다. –

+0

나는 또한 그들이 사용하는 것을보기 위해 MPFR의 소스를 조사 할 것입니다. –

답변

0

랜 코스의 근사는 그리 나쁘지 않습니다. 정확히 너는 뭘 의심하니? p, C (체비 셰프 다항식)을 계산하고, 예를 들어, p(i-1) 및 체비 셰프 계수로부터 p(i)을 계산할 수 있으며, 자신의 매트릭스를 유지 한 번만 계산 될 수 있도록 (a + 1/2)!가 상태 객체로서 구현 될 수있는 코드

부품.

1

Spouge's approximation은 Lanczos의 근사와 비슷하지만 원하는 오류를 설정할 수 있으므로 임의의 정밀도로 사용하는 것이 더 쉽습니다.

관련 문제