7.13.1 수학함수의 모임 math.h     [doc]     [smts]

 다양한 수학 함수 값을 구하기 위한 함수들이 math.h에 정의되어 있다.



함수/상수

기능

비고

double sin(double x)

sin(x)


double cos(double x)

cos(x)


double tan(double x)

tan(x)


double asin(double x)

sin-1(x)


double asin(double x)

cos-1(x)


double asin(double x)

tan-1(x)


double asin2(double y, double x)

tan-1(y/x) x가 0인 경우도 구해짐


double sinh(double x)

sinh(x)


double cosh(double x)

cosh(x)


double tanh(double x)

tanh(x)


double exp(double x)

ex


double log(double x)

ln x(= logex)


double log10(double x)

log10x


double pow(double x, double y)

xy


double sqrt(double x)

x의 제곱근(=x1/2)


double abs(double x)

x의 절대값


double floor(double x)

x보다 크지 않은 가장 큰 정수


double ceil(double x)

x보다 작지 않은 가장 큰 정수


(주의 : ANSI C에서 정의되었던 M_PI, M_E와 같은 상수들은 C99에서 삭제되었다.)


예를 들어 0~π/2 범위의 sin(x)값 테이블을 출력하는 프로그램은 다음과 같다.


0712-01.c

#include <stdio.h>
#include <math.h>
#define PI 3.14

int main() {
   for(double x=0; x<=PI/2; x+=0.01) {
       printf("sin(%.2f)=%lf\n", x, sin(x));
   }
}

실행 결과

sin(0.00)=0.000000
sin(0.01)=0.010000
sin(0.02)=0.019999
sin(1.53)=0.999168
sin(1.54)=0.999526
sin(1.55)=0.999784
sin(1.56)=0.999942

 이차 방정식의 두 근을 구하는 예제는 다음과 같다.


0712-02.c

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

int main() {
   double da, db, dc;

   printf("input a, b, c of ax^2+bx+c=0 :");
   scanf("%lf,%lf,%lf", &da,&db,&dc);
   double dd = db*db-4*da*dc; //판별식

   if (dd>0) { // 서로 다른 두 실근
       double dr1, dr2;
       dr1 = (-db+sqrt(dd))/(2*da);
       dr2 = (-db-sqrt(dd))/(2*da);
       printf("two different real roots:%lf, %lf\n", dr1, dr2);
   } else if (dd<0) { //허근
       double real, imag;
       real = -db/(2*da);
       imag = sqrt(-dd)/(2*da);
       printf("complex roots:%lf+j%lf, %lf-j%lf\n", real, imag, real, imag);
   } else { //중근
       double r = -db/(2*da);
       printf("double root:%lf\n", r);
   }
}

실행 결과

input a, b, c of ax^2+bx+c=0 :1,4,4
double root:-2.000000

이차 방정식의 근은 판별식의 조건에 따라 종류가 달라지므로 if ~ else if ~else 구문을 사용하여 각각을 처리하였다.


'프로그래밍언어.Lib > C,C++' 카테고리의 다른 글

7.13.3 stdlib.h  (0) 2016.05.30
7.13.2 문자열 관련 함수 string.h  (0) 2016.05.30
7.13 표준함수  (0) 2016.05.30
7.10 지역배열과 전역배열  (0) 2016.05.30
6장 연습문제  (0) 2016.05.30
Posted by 살레시오

댓글을 달아 주세요