반응형
라이프니트 원주율 공식은 아래와 같은 분모가 홀수인 값의 교대 급수에서 유도된다.
따라서 원주율 π (pi)는 교대 급수에 4를 곱한 값이 된다.
precisionCount를 넘겨 받는 메서드를 만들어서 정밀도를 확인해보자.
#include <stdio.h>
double pi(int precisionCount)
{
double leibniz = 0;
int odd = 1;
int inverse = 1;
for (int i = 0; i < precisionCount; i++, odd += 2, inverse *= -1)
{
leibniz += 1 / (double)(odd * inverse);
}
return 4.0 * leibniz;
}
int main()
{
printf("%.15f\n", pi(2));
printf("%.15f\n", pi(3));
printf("%.15f\n", pi(10));
printf("%.15f\n", pi(50));
printf("%.15f\n", pi(100));
printf("%.15f\n", pi(1000));
printf("%.15f\n", pi(10000));
printf("%.15f\n", pi(100000));
printf("%.15f\n", pi(1000000));
return 0;
}
실제 원주율의 값(위)와 100만번 연산한 값(아래)을 비교하면 꽤 차이가 많이 난다.
3.1415926535897932384626433832795028841971693993751058209749
3.1415916535897740000000000000000000000000000000000000000000
루트 값을 구하는 바빌로니아 법에 비해 꽤 많은 연산을 필요로 하니, 사용할 때는 주의를 하자.
반응형
'개발 > C, C++' 카테고리의 다른 글
100명의 죄수가 살아남을 확률을 높이기 위한 루프 전략 (Loop Strategy) (4) | 2022.09.24 |
---|---|
C, C++ - Window Visual Studio에서 폴더의 모든 파일 통합하기 (0) | 2022.08.09 |
셔플 Shuffle - 카드 섞기 알고리즘 (0) | 2022.07.08 |
인터페이스 vs 추상 클래스 (Java, C++ 비교) (0) | 2022.02.05 |
C++ - 순수 가상 클래스 (Pure Virtual Class) (0) | 2021.11.10 |
댓글