Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

미리 정의된 pow() 함수를 활용해 급수의 합을 계산하는 C 프로그램


문제 개요

이번 글에서는 다음 급수식의 합을 계산하는 C 프로그램을 살펴보겠습니다.

Sum = 1 - n²/2! + n⁴/4! - n⁶/6! + n⁸/8! - n¹⁰/10!

사용자는 프로그램 실행 중에 n 값을 직접 입력하며, math.h 헤더 파일에 미리 정의되어 있는 거듭제곱 함수 pow()를 활용해 급수의 합을 구하게 됩니다.

해결 방법

급수의 각 항은 두 부분으로 나눌 수 있습니다. 분자는 num의 짝수 거듭제곱(pow(num, i))이고, 분모는 해당 차수의 팩토리얼(i!)입니다. 차수가 2, 6, 10인 항은 음수(-) 부호를, 차수가 4, 8인 항은 양수(+) 부호를 가집니다. 따라서 반복문 안에서 팩토리얼을 누적으로 계산하고, 부호 조건에 따라 각 항을 더하거나 빼주면 됩니다.

알고리즘

미리 정의된 함수를 사용하여 급수의 합을 계산하는 절차는 다음과 같습니다.

1단계 − num 값을 입력받습니다.

2단계 − fact = 1, sum = 1, n = 5로 초기화합니다.

3단계 − i를 1부터 n까지 반복하면서 다음을 수행합니다.

    a. fact = fact * i 로 팩토리얼을 누적 계산
    b. i % 2 == 0 인지 확인 (짝수 차수 항만 처리)
    c. i == 2 또는 i == 6 또는 i == 10 이면
    d. sum += -pow(num, i) / fact  (음수 항)
    e. 그렇지 않으면 sum += pow(num, i) / fact  (양수 항)
    f. 최종 sum 을 출력

C 프로그램 전체 코드

다음은 미리 정의된 함수 pow()를 사용하여 급수의 합을 계산하는 C 프로그램입니다.

#include<stdio.h>
#include<conio.h>
#include<math.h>
void main(){
    int i,n=5,num;
    long int fact=1;
    float sum=1;
    printf("Enter the n value:");
    scanf("%d", &num);
    for(i=1;i<=n;i++){
        fact=fact*i;
        if(i%2==0){
            if(i==2||i==6||i==10)
                sum+= -pow(num,i)/fact;
            else
            sum+=pow(num,i)/fact;
        }
    }
    printf("sum is %f", sum);
}

코드 설명

  • #include<math.h> : 거듭제곱 계산에 필요한 pow() 함수를 사용하기 위해 포함합니다.
  • fact 변수 : 반복문이 진행됨에 따라 1!, 2!, 3!, 4!, 5! 순으로 팩토리얼 값이 누적 저장됩니다.
  • 부호 처리 : 차수가 2, 6, 10인 항은 마이너스(-)로, 차수가 4, 8인 항은 플러스(+)로 더해집니다.
  • 변수 n의 값을 5보다 크게 설정하면 n⁶, n⁸, n¹⁰처럼 더 많은 항까지 계산할 수 있습니다.

실행 결과

위 프로그램을 컴파일하여 실행하면 다음과 같은 결과가 출력됩니다.

Enter the n value:10
sum is 367.666656

n에 10을 입력한 경우, sum = 1 − 10²/2! + 10⁴/4! = 1 − 50 + 416.67 ≈ 367.67이 되어 출력 결과와 일치하는 것을 확인할 수 있습니다.