언어 자료구조 알고리즘/C언어 예제

적분 공식을 이용한 Sin(x)함수 만들기

언제나휴일 2009. 8. 19. 05:47
반응형

sin(x)를 구하는 적분 공식은 다음과 같다.

sin(x) = x - x^3/3! + x^5/5! - x^7/7! + x^9/9! ...

여기서 x는 각도를 얘기하는 것이 아니라 라디안을 얘기를 한다.

math.h에서 제공하는 sin()함수도 라디안을 입력 값을 갖는다.

이를 사용할 때 sin(90);과 같이 사용하는 것이 아니라 sin(90/PI);로 사용해야 한다.

 

암튼, 적분 공식을 이용해서 각도를 입력 매개변수를 받는 함수를 만들어 보자.

 

 

#include <stdio.h>
#include <math.h>

 
double Fac(int n);
double SignAngle(int angle)
{
     int i;
     double rad = (angle%180)/180.0;
     double mul=0;
     int sign = 1;

 

     for(i=1 ; i<10 ; i++) //급수를 크게 두지 않아도 오차가 그리 크지 않음을 확인할 수 있다.
     {
         mul = mul + sign *pow(rad,2*i-1)/Fac(2*i-1);            
         sign = -1 * sign;
     }
     return mul;
}

 

double Fac(int n)
{
    double re = 1.0;
    while(n)
    {
        re = re *n;
        n--;
    }
    return re;
}

 

//테스트하는 부분이다.

int main()
{
    
     int x;
     double mul=0;

     for(x=0 ; x<360 ; x=x+10)

     {
         printf("%5.5f %5.5f\n",SignAngle(x),sin((x%180)/180.0));
     }
}

반응형

'언어 자료구조 알고리즘 > C언어 예제' 카테고리의 다른 글

삽입정렬  (0) 2009.08.19
정보 올림피아드  (0) 2009.08.19
중복되지 않게 랜덤한 카드 발생  (0) 2009.08.19
파이, e, sin 구하기  (0) 2009.08.19
Sin함수 만들기(II)  (0) 2009.08.19
정보올림피아드 프로그래밍  (0) 2009.08.19
간단하게 Random함수 만들기  (0) 2009.08.19
재귀함수 형상화  (0) 2009.08.19
한글 초성 알아내기  (0) 2009.08.19
쉬프트 연산  (1) 2009.08.19