2009-10-06 3 views
6

파브리스 벨라 드의 기본이 방정식은컴퓨팅 π에 C#에서 "무한"진 정밀

alt text

는 아이러니하게도 이것은 BigReal 유형을 필요로 갈 수있는 방법입니다처럼 지금까지 보이는; 우리는 .Net을 위해 이것을 가지고 있습니까? .Net 4.0에는 BigInteger가 있습니다.

누구나 하스켈 버전이 있습니까?

+2

당신의 동기가 무엇입니까 ? :) – zproxy

+0

이것이 당신에게 관심이 있는지 확실하지 않은 경우 : http://pebblesteps.com/post/Calculating-PI-using-the-Monte-Carlo-Method-using-F.aspx – Benjol

+0

"당신의 동기는 무엇입니까? :) - - ulterior –

답변

6

당신이 르지 Karczmarczuk하여 하스켈 버전 here is a paper을 요구하고 있기 때문에, :

이 논문은 게으른 기능 코딩의 비정형 exercice입니다 , 재미와 지시 위해 작성된. 을 읽고 이 Haskell 프로그래밍 언어를 이해 한 사람이면 누구나 이해할 수 있습니다. 하스켈. π 에 대한 Bailey-Borwein-Ploue 수식을 동시 반복적 인 증분 방식으로 숫자 3, 1, 4, 1, 5, 9.을 생성하는 증분 방식으로 구현하는 방법을 보여줍니다. . 때까지 메모리 고갈. 이것은 누군가가 많은 자리를 필요로한다면 진행 방법이 아닙니다! 우리의 코딩 전략은 이며 위험하고 위험합니다. 은 분명히 고장입니다. 그것은 도메인의 정수를 기반으로합니다. 숫자의 무한 시퀀스는 정수 기준으로 확장 된 적절한 분수를 나타냅니다. 우리는 을 조작하는 방법을 보여줍니다 : 정수 등을 덧셈, 곱하기 오른쪽에서 무한으로 변하게하는 과 같은 시퀀스는 모호성 때문에 모든 에서 분명히 작동하지 않습니다. 일부 깊은 철학적 결과는 결론에서 논의 된 입니다.

실제로 문제를 효율적으로 또는 매우 실용적인 방법으로 해결하지는 않지만, 재미 있고 무한한 무한 정밀도 산술의 문제점을 보여줍니다.

다음은 또한 this paper by Jeremy Gibbons입니다.으로

+0

고마워요! 이 물건은 제가 찾고 있던 물건과 정확히 같습니다! –

2

위키 백과 세부 정보 파이 근사치를 구하는 방법은 많이 있습니다. here. 그들은 또한 몇 가지 샘플 의사 코드를 제공합니다.

편집 : 해결할 실제 세계 문제가없는이 종류의 수학적 문제에 관심이 있으시면 (IMHO는 분명히 좋은 태도입니다), 다음과 같이 할 수 있습니다. Euler Project page

+0

죄송합니다. 내 질문을 잘못 읽었습니다. 나는 네이티브 타입의 범위 안에있는 것이 아닙니다. 나는 진정한 "BigNum"π을 원한다. –

+0

나는 또한 "구운"해결책을 쓰지 않았으며, 이것에 대한 진정한 의견이나 아이디어를 얻었습니다. 나는 여유 시간에 이런 종류의 것에 관심이있는 사람이 Stackoverflow에있는 유일한 사람이라고 생각하지 않았습니다. –

+0

@Bent. 이것은 고전적인 수학 문제입니다. 게시 한 위키피디아 페이지에서 광범위하게 다루어지며, 진심으로 새로운 아이디어를 얻게 될지 의심 스럽습니다. 너 정확히 뭐야? – Brann

2

DLR 기반 동적 언어 (예 : IronPython)에 큰 유리수를 처리 할 가능성이 있습니다. 또는 P/Invoke을 통해 큰 실수의 휴대용 C/C++ 구현을 사용할 수 있습니다. "π을 계산하기 위해 세계에서 가장 신뢰할 수없는 기술"이라고

5

훨씬 파이에 대한 나의 마음에 드는 하스켈 스피 제레미 긴팔 원숭이에서 유래 :

pi = g(1,0,1,1,3,3) where 
    g(q,r,t,k,n,l) = 
     if 4*q+r-t<n*t 
     then n : g(10*q,10*(r-n*t),t,k,div(10*(3*q+r))t-10*n,l) 
     else g(q*k,(2*q+r)*l,t*l,k+1,div(q*(7*k+2)+r*l)(t*l),l+2) 

구현에서 찾을 수 있음을 정당화 수학적 배경 :

A Spigot Algorithm for the Digits of Pi

+1

굉장! 참조 주셔서 감사합니다! –