C++数学库(cmath)数学常量与数学函数

<cmath>头文件中包含了众多的数学常量与数学函数,在科学计算、工程计算、图形学等众多领域的C++程序开发中都有着广泛的应用。

1. 数学常量:

M_PI:表示圆周率 pi,其近似值为 3.14159265358979323846。

M_E:表示自然常数 e,其近似值为 2.71828182845904523536。

M_LOG2E:表示以 2 为底 e的对数,即 log2e,其近似值为 1.4426950408889634074。

M_LOG10E:表示以 10 为底 e 的对数,即 log10e,其近似值为 0.43429448190325182765。

M_SQRT2:表示根号2,其近似值为 1.41421356237309504880。

M_SQRT1_2:表示 根号2的倒数,其近似值为 0.70710678118654752440。

2. 基本三角函数:

double sin(double x):计算正弦值,x是以弧度为单位的角度。

#include <iostream>
#include <cmath>
int main() {
    double angle_rad = M_PI / 4;  // 45度角转换为弧度
    std::cout << "sin(pi/4) = " << std::sin(angle_rad) << std::endl;
    return 0;
}

double cos(double x):计算余弦值,x是以弧度为单位的角度。

#include <iostream>
#include <cmath>
int main() {
    double angle_rad = M_PI / 3;  // 60度角转换为弧度
    std::cout << "cos(pi/3) = " << std::cos(angle_rad) << std::endl;
    return 0;
}

double tan(double x):计算正切值,x是以弧度为单位的角度。

#include <iostream>
#include <cmath>
int main() {
    double angle_rad = M_PI / 6;  // 30度角转换为弧度
    std::cout << "tan(pi/6) = " << std::tan(angle_rad) << std::endl;
    return 0;
}

3. 反三角函数:

double asin(double x):计算反正弦值,返回值是以弧度为单位的角度,x的取值范围是 [-1, 1]。

#include <iostream>
#include <cmath>
int main() {
    double x = 0.5;
    std::cout << "asin(0.5) = " << std::asin(x) * 180.0 / M_PI << " degrees" << std::endl;
    return 0;
}

double acos(double x):计算反余弦值,返回值是以弧度为单位的角度,x的取值范围是 [-1, 1]。

double x = 0.5;
std::cout << "acos(0.5) = " << std::acos(x) * 180.0 / M_PI << " degrees" << std::endl;

double atan(double x):计算反正切值,返回值是以弧度为单位的角度。

double x = 1.0;
std::cout << "atan(1.0) = " << std::atan(x) * 180.0 / M_PI << " degrees" << std::endl;

double atan2(double y, double x):计算 y/x 的反正切值,返回值是以弧度为单位的角度。

double y = 2.0;
double x = 1.0;
std::cout << "atan2(2.0, 1.0) = " << std::atan2(y, x) * 180.0 / M_PI << " degrees" << std::endl;

4. 指数和对数函数:

double exp(double x):计算自然指数函数 e的值。

double x = 2.0;
std::cout << "e^2 = " << std::exp(x) << std::endl;

double log(double x):计算自然对数(以 e 为底),x需大于 0。

double x = 10.0;
std::cout << "ln(10) = " << std::log(x) << std::endl;

double log10(double x):计算常用对数(以 10 为底),x需大于 0。

double x = 100.0;
std::cout << "log10(100) = " << std::log10(x) << std::endl;

5. 幂函数:

double pow(double x, double y):计算 x的值。

double x = 2.0;
double y = 3.0;
std::cout << "2^3 = " << std::pow(x, y) << std::endl;

6. 绝对值和取整函数:

int abs(int n):计算整数n的绝对值。

int num = -5;
std::cout << "| - 5| = " << std::abs(num) << std::endl;

double fabs(double x):计算浮点数x的绝对值。

double num = -3.14;
std::cout << "| - 3.14| = " << std::fabs(num) << std::endl;

double ceil(double x):对 x 向上取整,返回不小于x的最小整数。

double num = 3.14;
std::cout << "ceil(3.14) = " << std::ceil(num) << std::endl;

double floor(double x):对 x 向下取整,返回不大于x的最大整数。

double num = 3.14;
std::cout << "floor(3.14) = " << std::floor(num) << std::endl;

7. 其他函数:

double sqrt(double x)计算给非负数 x 的平方根

double num = 2.25;
double result = std::sqrt(num);
std::cout << "The square root of " << num << " is " << result << std::endl;

double hypot(double x, double y):计算直角三角形的斜边长度(直角坐标系中点到原点的距离),即返回 sqrt(x2 + y2) 的值。

double x = 3.0;
double y = 4.0;
std::cout << "Hypotenuse of a right triangle with sides 3 and 4 = " << std::hypot(x, y) << std::endl;

double cbrt(double x):计算 x 的立方根。

#include <iostream>
#include <cmath>
int main() {
    double x = 8.0;
    std::cout << "cbrt(8) = " << std::cbrt(x) << std::endl;
    return 0;
}

double fmod(double numer, double denom):返回 numer / denom 的浮点余数。

double numer = 5.3;
double denom = 2.0;
std::cout << "fmod(5.3, 2.0) = " << std::fmod(numer, denom) << std::endl;

C++编程语言基础

C++数学库(cmath)数学常量与数学函数