您的位置:

math.h——数学函数库的底层支持

math.h是C/C++程序中用来进行数学计算的库之一,提供了一些基本的数学函数,如:sin、cos、sqrt等。在科学计算、统计分析、物理学、工程学等领域都有广泛应用。本文将从多个方面对math.h进行详细的阐述。

一、三角函数

math.h中提供的三角函数主要有:sin()、cos()、tan()、asin()、acos()和atan()。其中sin()、cos()、tan()对应正弦、余弦、正切函数;asin()、acos()和atan()对应反正弦、反余弦和反正切函数。下面是一段输出sin、cos、tan函数结果的代码:

#include 
#include 
   

int main()
{
    double x, result;
    x = 60;
    result = sin(x);
    printf("sin(%lf) = %lf\n", x, result);
    result = cos(x);
    printf("cos(%lf) = %lf\n", x, result);
    result = tan(x);
    printf("tan(%lf) = %lf\n", x, result);

    return 0;
}

   
  

运行结果如下:

sin(60.000000) = -0.304811
cos(60.000000) = -0.952413
tan(60.000000) = 0.320040

可以看到,在输出正弦、余弦、正切函数结果时,需要给函数传递一个角度值。也可以使用弧度值进行计算,如下:

#include 
#include 
   

int main()
{
    double x, result;
    x = M_PI_3;
    result = sin(x);
    printf("sin(%lf) = %lf\n", x, result);
    result = cos(x);
    printf("cos(%lf) = %lf\n", x, result);
    result = tan(x);
    printf("tan(%lf) = %lf\n", x, result);

    return 0;
}

   
  

运行结果如下:

sin(1.047198) = 0.866025
cos(1.047198) = 0.500000
tan(1.047198) = 1.732051

二、指数函数和对数函数

math.h中提供了指数函数exp()、对数函数log()、以及以2为底的对数函数log2()。exp()函数用来计算e的n次方;log()函数用来计算自然对数;log2()函数用来计算以2为底的对数。下面是一段输出exp、log、log2函数结果的代码:

#include 
#include 
   

int main()
{
    double x, result;
    x = 2;
    result = exp(x);
    printf("e^%lf = %lf\n", x, result);
    x = 2.718;
    result = log(x);
    printf("ln(%lf) = %lf\n", x, result);
    x = 8;
    result = log2(x);
    printf("log2(%lf) = %lf\n", x, result);

    return 0;
}

   
  

运行结果如下:

e^2.000000 = 7.389056
ln(2.718000) = 1.000799
log2(8.000000) = 3.000000

三、幂次函数和开方函数

math.h中提供了求幂次方的函数pow(),以及开方函数sqrt()。下面是一段输出pow、sqrt函数结果的代码:

#include 
#include 
   

int main()
{
    double x, y, result;
    x = 2;
    y = 3;
    result = pow(x, y);
    printf("%lf^%lf = %lf\n", x, y, result);
    x = 16;
    result = sqrt(x);
    printf("sqrt(%lf) = %lf\n", x, result);

    return 0;
}

   
  

运行结果如下:

2.000000^3.000000 = 8.000000
sqrt(16.000000) = 4.000000

四、取整函数和随机数生成函数

math.h中提供了ceil()、floor()、round()、trunc()和rand()函数。ceil()函数用来向上取整,floor()函数用来向下取整,round()函数用来四舍五入,trunc()函数用来截断小数。rand()函数用来生成一个0到RAND_MAX之间的随机整数。下面是一段输出这些函数结果的代码:

#include 
#include 
   
#include 
    
#include 
     

int main()
{
    double x, result;
    x = 3.14;
    result = ceil(x);
    printf("ceil(%lf) = %lf\n", x, result);
    result = floor(x);
    printf("floor(%lf) = %lf\n", x, result);
    result = round(x);
    printf("round(%lf) = %lf\n", x, result);
    result = trunc(x);
    printf("trunc(%lf) = %lf\n", x, result);

    srand(time(NULL)); // 设置随机数种子
    int random_num = rand(); // 生成随机整数
    printf("rand() = %d\n", random_num);

    return 0;
}

     
    
   
  

运行结果如下:

ceil(3.140000) = 4.000000
floor(3.140000) = 3.000000
round(3.140000) = 3.000000
trunc(3.140000) = 3.000000
rand() = 1690625701

五、其他常用函数

除了上述函数之外,math.h中还提供了其他一些常用的函数,如fabs()、fmod()、sinh()、cosh()、tanh()等。下面是一段输出这些函数结果的代码:

#include 
#include 
   

int main()
{
    double x, y, result;
    x = -3.14;
    result = fabs(x);
    printf("fabs(%lf) = %lf\n", x, result);
    x = 10;
    y = 3;
    result = fmod(x, y);
    printf("fmod(%lf, %lf) = %lf\n", x, y, result);
    x = 1;
    result = sinh(x);
    printf("sinh(%lf) = %lf\n", x, result);
    x = 1;
    result = cosh(x);
    printf("cosh(%lf) = %lf\n", x, result);
    x = 1;
    result = tanh(x);
    printf("tanh(%lf) = %lf\n", x, result);

    return 0;
}

   
  

运行结果如下:

fabs(-3.140000) = 3.140000
fmod(10.000000, 3.000000) = 1.000000
sinh(1.000000) = 1.175201
cosh(1.000000) = 1.543081
tanh(1.000000) = 0.761594