본문 바로가기
프로그램

[파이썬] pi 계산하기 (그레고리-라이프니츠 급수)

by 오디세이99 2022. 10. 14.
728x90
반응형

그레고리-라이프니츠 급수(Gregory-Leibniz series)를 이용한 pi 계산 방법 입니다.

# 파이 계산 : 그레고리-라이프니츠 급수(Gregory-Leibniz series)

# in_err = 0.01
# in_err = float(input('오차값을 실수로 입력하세요: '))
in_err = 0.000001

if in_err > 0.01:
    print('0.01 이하 값만 입력하세요.')
else:
    idx = 1                      # 분모값 변수. 처음은 1부터 시작
    pi = 0                       # pi 값 변수. 초기화
    flag =  0                    # 0=-, 1=+   힌번씩 -,+를 번갈아가면서 하기때문에 이를 지정하는 변수
    s1 = 4/idx                   # 최초 4/1. 이후 반복문에서 -, + 진행
    old = s1                     # old는 계산한 pi 값을 저장하고, 이전 계산한 값
    cnt = 1                      # 몇번째 진행하는 것인지 모니터링용
    while True:                       # 문한 반복
        idx += 2                       # 분모가 1,3,5,7 과 같이 2씩 증가
        print('cnt=',cnt,' /flag=',flag,'/s1=',s1,'/idx=',idx, end="")   # 진행 모니터링용
        if flag == 0:                  # -와 +를 바구어 가면서 반복
            s1 -= 4/idx
            flag = 1                   # 다음에는 + 하도록 
        else:
            s1 += 4/idx
            flag = 0

        err = abs(old - s1)            # 차이 계산. 절대값 처리
        print(' /old=',old,' /s1=',s1,' /err=',err)
        if err < in_err:    # 입력된 오차보다 작으면
            print(old)      # 이전 계산값 출력
            break          # 반복문 종료. 빠져나감

        old = s1            # old를 현재 계산한 pi  값으로 함
        cnt += 1            # 몇번하고 있는지 증가

결과

3.141592153589724
728x90
반응형

댓글