컴퓨터 / Computer

π 쉽고 편하게 계산하는 공식

파이공식 20 147 07.17 14:30

 π = 3.1415926535897932384626XXX......

4 - 4/3 + 4/5 - 4/7 + 2/8
= 4 - 1.333333...... + 0.8 - 0.571428...... + 0.25
= 3.1452380952XXX......

- 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + 2/12
= 3.1427128427XXX......

4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + 4/13 - 4/15 + 4/17 - 4/19 + 2/20
3.1418396189XXX......

일반적으로,
1 3 5 7 9 11 13 15 17 19 ......  홀수에서
1 5 9 13 17 21 ...... 을 홀수번째홀수
3 7 11 15 19 ....... 를 짝수번째홀수라고 하면,

4 - 4/3 + 4/5 - 4/7 + 4/9 - 4/11 + ...... + 4/홀수번째홀수 - 4/짝수번째홀수 + ...... 

+ 4/홀수번째홀수 - 4/(그다음홀수인짝수번째홀수) + 2/(그다음수인짝수)
꼴의 식은 길어짐에 따라 원래 라이프니츠 급수보다 훨씬 빠르게 원주율에 수렴합니다.

Comments

파이공식 07.17 14:51
j = 0
for i in range(1, 10000001):
    if i % 2 == 1:
        j += 4/(2*i-1)
    else:
        j -= 4/(2*i-1)
j += 2/(2*10000000)
print(j)

3.1415926535897913
MX세대 07.17 15:31
몇자리까지 가능한가요?
파이공식 07.17 15:56
한없이 원주율의 참값에 수렴하는 공식이나, 분모가 3의 배수 등인 무한소수를 절사해서 계산하면, 그 오차의 영향을 받습니다.
j = 0
for i in range(0, 10000000):
    if i % 2 == 1:
        j += 4/(2*(10000000-i)-1)
    else:
        j -= 4/(2*(10000000-i)-1)
j += 2/(2*10000000)
print(j)


실제로 거꾸로 계산하면 3.141592653589793으로 절사 오차가 작아집니다!
파이공식 07.17 15:57
1천만항 정도 계산하면, 거의 머신 프리시전까지는 올라가는 것으로 보입니다.
파이공식 07.17 16:01
N 자릿수에 필요한 연산량은 대략 10^(세제곱근 N)으로, 사실 20자리 초과를 얻기에는 매우 비효율적인 알고리즘이나,
15자리까지의 데모에는 매우 간결한 수식입니다. (라이프니츠는 6 자리 얻는것도 골이 아픕니다.)
MX세대 07.17 16:07
대단하네요!
Sha_bler 07.17 16:10
일반 컴퓨터에서는 어디까지 가능할까요? 램 16기가로 했을때.
아찌들 07.17 16:10
와 ~ 놀랬어요
파이공식 07.17 17:20
홀수번째홀수, 짝수번째홀수, 그다음짝수 같은 표현이 4n-3, 4n-1, 4n같은 표현보다 더 직감적으로 와 닿아서 원주율이 더 잘 이해가 되셨길 소망합니다.
파이공식 07.17 16:25
j = 0
for i in range(1, 1000000001):
    if i % 2 == 1:
        j += 40000000000000000000000000000000000000000//(2*i-1)
    else:
        j -= 40000000000000000000000000000000000000000//(2*i-1)
    if i % 100000000 == 0:
        print(f"{i//10000000}%, {j}")
j += 20000000000000000000000000000000000000000//(2*1000000000)
print(j)

십억항 (짝수분모를 가진 분수 합산까지 포함하면 10억 1항) 계산 결과입니다.

10%, 31415926435897932384626436332795028837320 : 1억항
20%, 31415926485897932384626434145295028835903 : 2억항
30%, 31415926502564599051293100592054288095099 : 3억항
40%, 31415926510897932384626433871857528836019 : 4억항
50%, 31415926515897932384626433852795028832990 : 5억항
60%, 31415926519231265717959767177702436237921 : 6억항
70%, 31415926521612218098912148125797944280340 : 7억항
80%, 31415926523397932384626433837677841324720 : 8억항
90%, 31415926524786821273515322725113272994147 : 9억항
100%, 31415926525897932384626433835295028819736 : 십억항
31415926535897932384626433835295028819736 : 십억일항 (단순 라이프니츠 교대급수에서 +2/2000000000 보정)
파이공식 07.17 16:30
저는 이거 ASUS Zenbook OLED 15에서 했더니 약 10분 정도 걸렸습니다.
장치 이름 {비공개}
프로세서 AMD Ryzen 7 7735U with Radeon Graphics (2.70 GHz)
설치된 RAM 16.0GB(15.2GB 사용 가능)
그래픽 카드 AMD Radeon (TM) Graphics (486 MB)
저장소 477 GB 중 462 GB이(가) 사용됨
장치 ID {비공개}
제품 ID {비공개}
시스템 종류 64비트 운영 체제, x64 기반 프로세서
펜 및 터치 이 디스플레이에 사용할 수 있는 펜 또는 터치식 입력이 없습니다.
Sha_bler 07.17 16:33
우와. 16기가에서도 10분이라니.
파이공식 07.17 16:39
Python IDLE Environment라서 그런가 봅니다. 비단뱀~
Sha_bler 07.17 16:41
그 놈이 은근히 메모리 많이 먹어요.  아예 C 코드가 더 나을 듯.
KPOPLOVE 07.17 16:43
GPU 가능한 노트북인가요? GPU 쓰면 더 많이 나올듯 한데요.
MX세대 07.17 17:01
파이썬 쓰셨다면 math.pi 안 쓰시고 저렇개 하신 이유가 궁금합니다.
파이공식 07.17 17:09
ㅎㅎㅎㅎㅎㅎ 저는 단순한 공식으로 pi값을 "계산"하려고 기존의 라이프니츠 공식을 수정한(짝수분모인 분수 플러스) 겁니다.
MX세대 07.17 17:35
기계혹사자시군요.  존경합니다!
떠돌이 07.17 20:00
기본에 입각한 접근이라니. 정석이군요.
토마스 07.17 23:47
우와.  상상도 못했는데. 대단하시네요.
여자 통 넓은 밴딩 플레어 치마 바지 URK-504
여성 아쿠아슈즈 젤리 슬링백 플랫슈즈 JELLY2
케라시스 코코넛 올리브 샴푸 800ml
+1
리본 캉캉 반팔 롱원피스 LL-D149
맥톡 MT010 보라먼지
자광 무선 쿨링선풍기650 데스크탑1p 미니선풍기 손선풍기 접이식 탁상용선풍기
핸드폰 손목 암밴드 거치대 스포츠 라이딩 러닝 네비게이션 홀더
(이거찜) 리본 에어랩 파우치 여행용 보관 수납 가방 드라이기 케이스 호환가능
유니온 표지판 (점자) 입구 (점자표지판) (알루미늄표지판) (40x55mm) (UJ020
4단 신발 정리대 현관 신발 정리대 틈새 공간활용 선반 원룸 수납 가정용
BTM 에어후레쉬 크리스탈워터 400ml-아시안허브
빨간우편함 우체통소품 우편함 우체통
스틸 코팅 덤벨봉 피트니스 운동용 헬스바
알루미늄 양은 양수 냄비 18cm 경량형
액티브 그린케어 성인기저귀 팬티형 대형 10매
업소용 양은 물삭구 국자 대

3M 8915 고정용 필라멘트 테이프 10mm X 20M
바이플러스
탑차보조브레이크등 제동등 차폭등 15구 12V 24V 겸용
칠성상회

맨위로↑