삼각함수 중 sin(), cos(), tan() 함수는 각도가 아닌 호도를 사용합니다.
호도는 파이(3.141592)를 180도로 계산하는 방식이며 1호도는 "3.141592/180" 입니다.
함수 | 설명 |
double sin(double x) | sin() 함수는 x의 사인 값을 리턴합니다. |
double cos(double x) | cos() 함수는 x의 코사인을 리턴합니다. |
double tan(double x) | tan() 함수는 x의 탄젠트 값을 리턴합니다. |
double sin(double x) 함수
매개변수 : x는 각도(라디안)
반환 값 : sin 함수는 x의 사인을 반환 합니다. x가 263 보다 크거나 같은 경우 또는-263 보다 작거나 같은 경우 결과에 중요 한 손실이 발생 합니다.
사용 예]
#include <stdio.h> #include <math.h> #define PI 3.14159265 int main() { double x, d, ret; x = 45; // 각도 d = PI / 180; // 호도 표현법 1도는 3.141592/180도 ret = sin(x*d); // 각도 * 호도 printf("sin( %f ) = %f\n", x*d, ret); return 0; } |
실행 결과] sin( 0.785398 ) = 0.707107 |
double cos(double x) 함수
매개변수 : x는 각도(라디안)
반환 값 : x의 코사인입니다. x가 263 보다 크거나 같은 경우 또는-263 보다 작거나 같은 경우 결과에 중요 한 손실이 발생 합니다.
사용 예]
#include <stdio.h> #include <math.h> #define PI 3.14159265 int main() { double x, d, ret; x = 45; // 각도 d = PI / 180; // 호도 표현법 1도는 3.141592/180도 ret = cos(x*d); // 각도 * 호도 printf("cos( %f ) = %f\n", x*d, ret); return 0; } |
실행 결과] cos( 0.785398 ) = 0.707107 |
double tan(double x)
매개변수 : x는 각도(라디안)
반환 값 : tan 함수는 x의 탄젠트를 반환 합니다. x가 263 보다 크거나 같은 경우 또는-263 보다 작거나 같은 경우 결과에 중요 한 손실이 발생 합니다.
사용 예]
#include <stdio.h> #include <math.h> #define PI 3.14159265 int main() { double x, d, ret; x = 45; // 각도 d = PI / 180; // 호도 표현법 1도는 3.141592/180도 ret = tan(x*d); // 각도 * 호도 printf("tan( %f ) = %f\n", x*d, ret); return 0; } |
실행 결과] tan( 0.785398 ) = 1.000000 |
사인, 코사인, 탄젠트을 0도부터 10도씩 증가하면서 360도까지의 값들을 확인해보자.
소스 코드 |
#include #include #define PI 3.14159265 int main() { double d, ret; int x; d = PI / 180; for (x = 0; x <= 360; x += 10) { printf("%d도:sin(%f)=%f cos(%f)=%f tan(%f)=%f\n", x, x*d, sin(x*d), x*d, cos(x*d), x*d, tan(x*d)); } return 0; } |
역삼각함수 asin(), acos(), atan(), atan2()함수에 대해서 알아보자.
함수 | 설명 |
double asin(double x) | asin() 함수는 x의 역사인을 리턴합니다. |
double acos(double x) | acos() 함수는 x의 역코사인을 리턴합니다. |
double atan(double x) | atan() 함수는 x의 역탄젠트를 리턴합니다. |
double atan2(double y, double x) | atan2() 함수는 y/x의 역탄젠트를 리턴합니다. |
double asin(double x) 함수
매개변수 : x는 -1에서 1 사이여야 합니다.
반환값 : asin() 함수는 x의 역사인을 리턴합니다. x 값은 -1에서 1 사이여야 합니다. x가 -1 미만이거나 1을 초과하면 asin() 함수는 errno를 EDOM으로 설정하고 0의 값을 리턴합니다.
소스코드 | 실행 결과 |
#include <stdio.h> #include <math.h> int main(void) { double x, ret; x = 0.7; ret = asin(x); printf("asin( %lf ) = %lf\n", x, ret); return 0; } |
asin( 0.700000 ) = 0.775397 |
double acos(double x) 함수
매개변수 : x는 -1과 1 사이의 값입니다.
반환값 : acos() 함수는 x의 역코사인을 리턴합니다. x 값은 -1에서 1 사이여야 합니다(경계값 포함). x가 -1 미만이거나 1을 초과하면 acos()에서는 errno를 EDOM으로 설정하고 0을 리턴합니다.
소스코드 | 실행 결과 |
#include <stdio.h> int main(void) |
acos( 0.000000 ) = 1.570796 |
double atan(double x), double atan2(double y, double x) 함수
매개변수 :
x : x 좌표를 나타내는 부동 소수점 값입니다.
y : y 좌표를 나타내는 부동 소수점 값입니다.
반환값 : atan 는-π/2 ~ π/2 라디안 범위에서 x 의 아크탄젠트를 반환 합니다. atan2 는-π에서 π 라디안 까지의 y/x 의 아크탄젠트를 반환 합니다. X 가 0 이면 atan 는 0을 반환 합니다. Atan2 의 두 매개 변수가 모두 0 인 경우 함수는 0을 반환 합니다. 모든 결과는 라디안 단위입니다.
소스코드 | 실행 결과 |
#include <stdio.h> #include <math.h> int main(void) { double x, y, ret1, ret2; x = 5; y = 5; ret1 = atan(x); ret2 = atan2(y, x); printf("atan( %f ) = %f\n", x, ret1); printf("atan2( %f, %lf ) = %f\n", y, x, ret2); return 0; } |
atan( 5.000000 ) = 1.373401 atan2( 5.000000, 5.000000 ) = 0.785398 |
쌍곡선함수의 하이퍼볼릭 사인, 하이퍼볼릭 코사인, 하이퍼볼릭 탄젠트에 대해서 알아보자.
함수 | 설명 |
double sinh(double x); | sinh() 함수는 x의 쌍곡 사인의 값을 리턴합니다. |
double cosh(double x); | cosh() 함수는 x의 쌍곡 코사인을 리턴합니다. |
double tanh(double x); | tanh() 함수는 x의 쌍곡 탄젠트 값을 리턴합니다. |
double sinh(double x) 함수
매개변수 : x는 라디안
반환값 : sinh() 함수는 x의 쌍곡 사인의 값을 리턴합니다. 결과가 너무 크면, sinh() 함수는 errno를 ERANGE로 설정하고 값 HUGE_VAL(x의 값에 따라 양수나 음수)을 리턴합니다.
소스코드 | 실행 결과 |
#include <stdio.h> |
sinh( 1.570796 ) = 2.301299 |
double cosh(double x) 함수
매개변수 : x는 라디안
반환값 : cosh() 함수는 x의 쌍곡 코사인을 리턴합니다. 결과가 너무 크면 cosh()에서는 HUGE_VAL의 값을 리턴하고 errno를 ERANGE로 설정합니다.
소스코드 | 실행 결과 |
#include <stdio.h>
int main(void) |
cosh( 1.500000 ) = 2.352410 |
double tanh(double x) 함수
매개변수 : x는 라디안
반환값 : tanh() 함수는 x의 쌍곡 탄젠트 값을 리턴합니다. tanh()의 결과는 범위 오류를 포함할 수 없습니다.
소스코드 | 실행 결과 |
#include <stdio.h> |
tanh( 0.785398 ) = 0.655794 |
'프로그램언어 > C언어' 카테고리의 다른 글
c언어 문자열복사함수와 문자열 연결함수 (0) | 2019.10.18 |
---|---|
c언어 수학관련 함수 (0) | 2019.10.17 |
c언어 팩토리얼(계승) (0) | 2019.10.15 |
c언어 열거형 - enum (0) | 2019.10.14 |
c언어 10진수를 2진수로 변환 (0) | 2019.10.11 |