c 언어/c 표준 라이브러리(Standard C Library)

C언어 `math.h`의 삼각 함수 정리

임베디드 친구 2025. 2. 20. 09:20
728x90
반응형

C언어 math.h의 삼각 함수 정리

C언어에서는 math.h 헤더 파일을 통해 다양한 수학 함수를 제공하며, 삼각 함수도 포함됩니다. 이번 글에서는 sin, cos, tan, asin, acos, atan 함수에 대해 설명하고 예제 코드를 제공합니다.

1. 삼각 함수란?

삼각 함수는 각도를 입력받아 삼각형의 변의 비율을 반환하는 함수입니다. 대표적인 함수는 다음과 같습니다:

  • sin(x): 주어진 각도의 사인 값을 반환
  • cos(x): 주어진 각도의 코사인 값을 반환
  • tan(x): 주어진 각도의 탄젠트 값을 반환
  • asin(x): 사인 값에서 각도를 구함 (역함수)
  • acos(x): 코사인 값에서 각도를 구함 (역함수)
  • atan(x): 탄젠트 값에서 각도를 구함 (역함수)

모든 입력값과 출력값은 라디안(Radian) 단위를 사용하므로, 각도를 변환할 필요가 있습니다.

2. 기본 삼각 함수 (sin, cos, tan)

sin, cos, tan 함수 사용법

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

#define PI 3.14159265358979323846

int main() {
    double angle = 30.0; // 30도
    double radian = angle * (PI / 180.0); // 도(degree)를 라디안(radian)으로 변환

    printf("sin(%.2f°) = %.6f\n", angle, sin(radian));
    printf("cos(%.2f°) = %.6f\n", angle, cos(radian));
    printf("tan(%.2f°) = %.6f\n", angle, tan(radian));

    return 0;
}

실행 결과

sin(30.00°) = 0.500000
cos(30.00°) = 0.866025
tan(30.00°) = 0.577350

3. 역삼각 함수 (asin, acos, atan)

역삼각 함수는 특정 사인, 코사인, 탄젠트 값에 대한 각도를 구하는 함수입니다.

asin, acos, atan 함수 사용법

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

#define PI 3.14159265358979323846

int main() {
    double value = 0.5;
    double angle_sin = asin(value) * (180.0 / PI); // 라디안을 도(degree)로 변환
    double angle_cos = acos(value) * (180.0 / PI);
    double angle_tan = atan(value) * (180.0 / PI);

    printf("asin(%.2f) = %.2f°\n", value, angle_sin);
    printf("acos(%.2f) = %.2f°\n", value, angle_cos);
    printf("atan(%.2f) = %.2f°\n", value, angle_tan);

    return 0;
}

실행 결과

asin(0.50) = 30.00°
acos(0.50) = 60.00°
atan(0.50) = 26.57°

4. 주의할 점

  1. 각도 변환: math.h의 삼각 함수는 라디안 단위로 동작하므로, 변환이 필요합니다.
    • 도 → 라디안 변환: radian = degree * (PI / 180.0)
    • 라디안 → 도 변환: degree = radian * (180.0 / PI)
  2. 역삼각 함수 범위:
    • asin(x), acos(x)의 입력 범위는 -1 <= x <= 1 입니다.
    • atan(x)는 모든 실수 값을 입력으로 받을 수 있습니다.
  3. 특정 값의 tan 주의: tan(x)cos(x) == 0이 되는 90도, 270도에서 정의되지 않습니다. 즉, tan(PI/2), tan(3*PI/2) 등은 무한대 값을 반환하거나 계산 오류가 발생할 수 있습니다.

5. 삼각 함수 활용 예제: 직각삼각형에서 변의 길이 구하기

다음 예제는 삼각 함수를 이용해 직각삼각형의 높이를 계산하는 프로그램입니다.

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

#define PI 3.14159265358979323846

int main() {
    double base = 10.0; // 밑변 길이
    double angle = 45.0; // 각도 (degree)
    double radian = angle * (PI / 180.0);

    double height = base * tan(radian); // 높이 계산

    printf("밑변: %.2f, 각도: %.2f°\n", base, angle);
    printf("높이: %.2f\n", height);

    return 0;
}

실행 결과

밑변: 10.00, 각도: 45.00°
높이: 10.00

6. 정리

  • math.h의 삼각 함수는 각도를 라디안 단위로 변환하여 사용해야 합니다.
  • sin, cos, tan은 입력된 각도의 삼각비를 계산합니다.
  • asin, acos, atan은 역삼각 함수를 제공하여 삼각비로부터 각도를 계산합니다.
  • 삼각 함수를 활용하여 다양한 기하학적 문제를 해결할 수 있습니다.
반응형