Skip to content

문제 14 · 라이프니츠 공식 빈칸 채우기

문제 14 [3점]

아래 원주율 π를 근사approximation하기 위한 공식(Leibniz formula)을 구현한 코드의 빈칸을 채우세요.

π=4(113+1517++(1)n+12n1)
cpp
cout << "정수 n을 입력하세요: ";
int n;
cin >> n;
double sum = 0.0;

// 라이프니츠 급수 표현, 빈칸을 채우세요.
for (int i = 1; i <= n; i++) {
    /* 각 항을 합산합니다.
    빈칸 1
    */
}
/* 급수를 바탕으로 π 값을 계산합니다.
빈칸 2
*/
풀이 및 해설

라이프니츠 급수의 i번째 항은 분모가 2i1(홀수 1,3,5,)이고, 부호는 홀수 번째 항이 +, 짝수 번째 항이 - 로 번갈아 나타납니다.

i=(1)i+12i1

빈칸 1 — 각 항을 부호와 함께 sum에 더합니다.

cpp
sum += ((i % 2 == 1) ? 1.0 : -1.0) / (2 * i - 1);

빈칸 2 — 급수의 합은 π/4에 수렴하므로, 4를 곱해 π를 얻어 출력합니다.

cpp
double pi = 4 * sum;
cout << "pi ≈ " << pi << endl;

부호를 pow(-1, i + 1)로 써도 되지만, 정수 판별(i % 2)이 더 간단하고 정확합니다. 이 급수는 수렴이 느려서 n을 크게 해도 정확도가 서서히 올라갑니다(n = 100000일 때 3.141583 정도).

빈칸1: sum += ((i%2==1)?1.0:-1.0)/(2*i-1);

👉 실습(C++)에서 확인하기

PDF