pi 계산이 정확한지 어떻게 알 수 있습니까?


772

pi의 숫자를 순차적으로 제공하는 프로그램을 구현하기 위해 다양한 방법을 시도했습니다. Taylor 시리즈 방법을 사용해 보았지만 시간이 지나면 결과를 온라인 값과 비교할 때 매우 느리게 수렴되는 것으로 나타났습니다. 어쨌든, 나는 더 나은 알고리즘을 시도하고 있습니다.

따라서 프로그램을 작성하는 동안 모든 알고리즘과 마찬가지로 문제가 발생했습니다. n계산 된 숫자가 정확한지 어떻게 알 수 있습니까?


20
더 많은 수학적 문제. 좋은 알고리즘은 또한 오류의 추정치를 제공합니다.

35
파이와 비교?
Dave Newton

55
@ chris : "말 그대로 어디에나"?
궤도에서 가벼움 경주

32
최대 3.141592653589793238462643383279502까지 확인할 수 있습니다. 그 외에도 많은 숫자가 필요한 이유는 무엇입니까? (이것은 우주 크기의 원을 갖는 원자 수준의 정확도와 같은 것입니다.)
AJ Henderson

65
왜 pi로 나누고 결과가 1인지 확인하지 않습니까? (그냥 농담)
user541686

답변:


1629

나는 파이의 가장 자리 수에 대한 현재 세계 기록 보유자이므로, 나는 2 센트를 추가 할 것입니다 :

실제로 새로운 세계 기록을 설정하지 않는 한 일반적인 관행은 계산 된 자릿수를 알려진 값과 비교하는 것입니다. 충분히 간단합니다.

실제로, 나는 계산에 대한 계산을 목적으로 자릿수를 나열하는 웹 페이지를 가지고 있습니다 : http://www.numberworld.org/digits/Pi/


그러나 세계 신기록을 세우면 비교할 것이 없습니다.

역사적으로 계산 된 숫자가 올바른지 확인하는 표준 방법은 두 번째 알고리즘을 사용하여 숫자를 다시 계산하는 것입니다. 따라서 계산이 잘못되면 끝에있는 숫자가 일치하지 않습니다.

일반적으로 두 번째 알고리즘이 느리기 때문에 필요한 시간이 두 배 이상 증가합니다. 그러나 계산되지 않은 영토와 새로운 세계 기록의 미지의 영역으로 방황 한 후 계산 된 숫자를 확인하는 유일한 방법입니다.


슈퍼 컴퓨터가 레코드를 설정하던 시절에 두 가지 다른 AGM 알고리즘 이 일반적으로 사용되었습니다.

이들은 O(N log(N)^2)구현하기 매우 쉬운 알고리즘입니다.

그러나 요즘에는 상황이 약간 다릅니다. 마지막 세 개의 세계 기록에서 두 번의 계산을 수행하는 대신 가장 빠른 알려진 공식 ( Chudnovsky Formula )을 사용하여 하나의 계산 만 수행했습니다 .

여기에 이미지 설명을 입력하십시오

이 알고리즘은 구현하기가 훨씬 어렵지만 AGM 알고리즘보다 훨씬 빠릅니다.

그런 다음 숫자 추출을 위해 BBP 수식을 사용하여 이진수를 확인합니다 .

여기에 이미지 설명을 입력하십시오

이 수식을 사용하면 모든 숫자 계산 하지 않고도 임의의 이진수를 계산할 수 있습니다 . 따라서 마지막으로 계산 된 이진 숫자를 확인하는 데 사용됩니다. 따라서 전체 계산보다 훨씬 빠릅니다.

이것의 장점은 다음과 같습니다.

  1. 값 비싼 계산은 하나만 필요합니다.

단점은 다음과 같습니다.

  1. Bailey-Borwein-Plouffe (BBP) 공식 의 구현 이 필요합니다.
  2. 2 진수에서 10 진수로 기수 변환을 확인하려면 추가 단계가 필요합니다.

마지막 몇 자리를 확인하는 것이 모든 자리가 올바른 것을 암시하는 이유에 대한 세부 사항을 살펴 보았습니다. 그러나 계산 오류가 마지막 숫자로 전파되기 때문에 이것을 쉽게 알 수 있습니다.


이제이 마지막 단계 (변환 확인)는 실제로 상당히 중요합니다. 이전의 세계 기록 보유자 중 한 명이 실제로 우리에게 전화를 걸었습니다 .

그래서 내 블로그 에서이 스 니펫을 가져 왔습니다.

N = # of decimal digits desired
p = 64-bit prime number

여기에 이미지 설명을 입력하십시오

밑이 10 인 산술을 사용하는 A와 이진 산술을 사용하는 B를 계산합니다.

여기에 이미지 설명을 입력하십시오

인 경우 A = B"매우 높은 확률"이면 변환이 올바른 것입니다.


자세한 내용은 내 블로그 게시물 Pi-5 Trillion Digits를 참조하십시오 .


15
특정 알고리즘이 N 자리로 수렴 된시기를 확인하는 방법에 대한 다른 질문에 대답하려면 알고리즘의 수렴 동작을 알아야합니다. Taylor 시리즈 ArcTan(1)는 대수적으로 수렴됩니다. 따라서 수렴하기 위해서는 기하 급수적으로 많은 수의 용어가 필요합니다. 간단히 말해서 사용하지 마십시오.
Mysticial

21
예, Chudnovsky의 공식은 항당 14.18 자리로 꾸준히 수렴합니다. 따라서 필요한 자릿수를 얻기 위해 총 자릿수를 그 숫자로 나눌 수 있습니다. (정확한 값은 다음과 같습니다 Log(151931373056000)/Log(10) = 14.181647462725477655...)
Mysticial

7
@ erikb85 킨다. BBP 공식은 어느 정도는 두 번째 알고리즘으로 계산됩니다. 그러나 기본 10으로의 변환을 확인하지 않기 때문에 그 자체로는 충분하지 않습니다. BBP + 변환 확인을 사용하여 두 번째 계산의 필요성을 없애는 아이디어는 제게 아닙니다. Fabrice Bellard가 2009 년 세계 기록에서 처음으로 수행했습니다. 우리가 똑같이하고 개선했다는 것은 좋은 생각이었습니다.
신비주의

83
@FunsukWangadu 나는 나 자신만을 위해 말할 수 있지만, 여기에 간다. 나에게 이것은 또 다른 숫자 일 뿐이다. 값 자체는 숫자 자체 또는 10 테라 바이트의 쓸모없는 숫자가 아니며이를 달성하는 데 사용되는 방법 입니다. 수세기 동안의 수학과 수십 년에 걸친 컴퓨터 / 프로그래밍 연구는 다른 많은 분야에도 적용 할 수 있으므로 하드 드라이브보다 훨씬 가치가 있습니다. 간단히 말해서 : Pi의 숫자를 계산하는 것은 더 스포츠 적입니다.
신비주의

8
@Mystical은 다른 stackoverflow 질문 에서 Pi 계산 사이트를 우연히 발견했으며 도움을 줄 수 없었습니다. 로그의 하드 드라이브 고장 / 지진을 좋아했습니다 :) 놀라운 놀라운!
Joe

48

의심 할 여지없이, 당신의 목적을 위해 (나는 단지 프로그래밍 연습이라고 가정한다), 가장 좋은 방법은 웹상의 pi 숫자 목록과 비교하여 결과를 확인하는 것이다.

그리고 우리는 그 가치가 올바른지 어떻게 알 수 있습니까? 글쎄, 나는 알고리즘의 구현이 올바른지 증명하는 컴퓨터 과학 방법이 있다고 말할 수있다.

좀 더 실용적으로, 다른 사람들이 다른 알고리즘을 사용하고 모두 소수점 이하 수천 자리에 동의하면 (정확한), 그것은 당신에게 그들이 맞다는 따뜻한 퍼지 느낌을 줄 것입니다.

역사적으로 William Shanks는 1873 년에 소수점 이하 707 자리까지 pi를 출판했습니다. 가난한 사람, 그는 소수점 이하 528 번째 자리에서 실수를했습니다.

매우 흥미롭게도 1995 년 에 이전의 모든 자릿수를 계산할 필요없이 pi의 n 번째 자릿수 (기본 16)를 직접 계산하는 특성을 가진 알고리즘이 발표되었습니다 !

마지막으로, 초기 알고리즘이 pi/4 = 1 - 1/3 + 1/5 - 1/7 + ...프로그래밍이 가장 간단하지는 않았지만 가장 느린 방법 중 하나입니다. 빠른 접근 방법 은 Wikipedia의 pi 기사를 확인하십시오 .


7
마지막 공식 (Leibniz formula, iirc)은 실제로 덧셈과 뺄셈을 번갈아 가며 나타냅니다.
Thomas

21

여러 접근 방식을 사용하여 동일한 답변으로 수렴되는지 확인할 수 있습니다. 또는 'net에서 일부를 가져옵니다. Chudnovsky 알고리즘은 일반적으로 pi를 계산하는 매우 빠른 방법으로 사용됩니다. http://www.craig-wood.com/nick/articles/pi-chudnovsky/


기회를 줄이지 만 다중 접근 솔루션으로 확신 할 수는 없습니다. 둘 다 잘못되면 어떨까요? net을 확인하면 유효성이 유지되지 않으므로 net 자체에서 값을 가져 오지 않는 이유는 무엇입니까? 나는 어느 것이 더 적합한 bbp에 대해 생각하고 있습니까?
Ishan Sharma

7
@IshanSharma 두 알고리즘이 독립적 인 경우 두 계산이 동일한 결과로 잘못 될 가능성보다 거의 제로입니다. 두 계산 중 하나라도 잘못되면 최종 결과가 일치하지 않으므로 그 중 하나 이상이 잘못되었음을 알 수 있습니다.
Mysticial

15

Taylor 시리즈는 파이를 근사화하는 한 가지 방법입니다. 언급했듯이 천천히 수렴합니다.

Taylor 계열의 부분 합은 pi의 실제 값에서 멀리 떨어진 다음 항의 승수 내에있는 것으로 표시 될 수 있습니다.

pi를 근사화하는 다른 방법에는 최대 오차를 계산하는 비슷한 방법이 있습니다.

수학적으로 증명할 수 있기 때문에 이것을 알고 있습니다.


두 번째. 나는 여기에있는 대부분의 답변이 수학 증거 의 개념에 거의 충분한 무게를 두지 않고 있다고 생각 합니다. 프로그램이 pi의 자릿수를 계산하는 것이 무엇이든, 프로그램의 방법이 실제로 pi를 계산한다는 가장 설득력있는 수학적 증거보다 더 설득력이 없을 것입니다. 어떤 프로그램의 다른 제약이 파이 계산 파이를 제안한다 : 그들은을 위해 많이 목표로한다고 그 이해도 성능 및 정확성 등.
Luis Casillas

5

죄와 죄를 위해 (공정하게) 신속하게 수렴하는 전력 계열을 사용하여 컴퓨팅 sin(pi/2)(또는 cos(pi/2)그 문제)을 시도 할 수 있습니다. (더 나은 : 더 x=0빠른 수렴 을 위해 더 가까이 계산하기 위해 다양한 배가 수식을 사용하십시오 .)

BTW tan(x)는 시리즈를 사용하는 것보다 낫습니다 cos(x). 블랙 박스 라고 말하는 컴퓨팅 (예 : 위와 같이 테일러 시리즈를 사용할 수 있음)은 Newton을 통해 근본을 찾는 것입니다. 분명히 더 나은 알고리즘이 있지만 톤 수를 확인하지 않으려면 충분합니다 (구현하기가 까다 롭지 않으며 작동 이유를 이해하기 위해서는 약간의 미적분 만 필요합니다.)


6
1000 자리 숫자가 1만큼 줄어 났음을 발견하는 데 어떻게 도움이되는지 잘 모르겠습니다. 정확 sin(pi/2)하지 않은 값이 필요 합니까?
Matthieu M.

농담이나 다른 것이 아니라면 이전 답변에 대해 무엇을 말할지 잘 모르겠습니다. sin (pi / 2) = 1 cos (pi / 2) = 0 그래서, 나는 확실히 확실한 수렴을 말하고 싶습니다.
BentFranklin

15
Pi 자체를 계산하는 것보다 실제로 평가 sin(x)하고 cos(x)높은 정밀도를 얻는 것이 훨씬 어렵다는 것은 모든 사람에게 분명하지 않은 것 같습니다.
Mysticial

2
명백한 이유로, 당신은 이것을 위해 sin (pi / 2)을 사용해서는 안됩니다. 대신 sin (pi / 6)을 사용하고 정확히 1/2로 나오는 것이 좋습니다.
Robert Lozyniak
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.