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
반응형
'프로그램' 카테고리의 다른 글
[파이썬] 별 그리기, 임의의 색상 지정 (0) | 2022.10.24 |
---|---|
[파이썬] 주피터노트북(jupyternotebook) 가로크기 늘리기 (0) | 2022.10.23 |
[파이썬] 감염재생산지수로 미래 감염자수 예상 (0) | 2022.10.14 |
[파이썬] tkinter simpledialog에서 입력한 문자로 수정하기 (0) | 2022.10.14 |
[파이썬] train_test_split의 random_state 옵션 (0) | 2022.10.09 |
댓글