Appearance
L7_01 数学库函数
一、三角函数
1.1 基本三角函数
cpp
#include <cmath>
#include <iostream>
using namespace std;
int main() {
double angle = 30.0; // 角度
double radian = angle * M_PI / 180.0; // 转换为弧度
// 正弦函数
double sin_val = sin(radian);
cout << "sin(30°) = " << sin_val << endl;
// 余弦函数
double cos_val = cos(radian);
cout << "cos(30°) = " << cos_val << endl;
// 正切函数
double tan_val = tan(radian);
cout << "tan(30°) = " << tan_val << endl;
return 0;
}1.2 反三角函数
cpp
double asin_val = asin(0.5); // 反正弦,返回弧度
double acos_val = acos(0.5); // 反余弦,返回弧度
double atan_val = atan(1.0); // 反正切,返回弧度
double atan2_val = atan2(1, 1); // 反正切2,返回弧度
// 将弧度转换为角度
double degree = atan_val * 180.0 / M_PI;1.3 双曲三角函数
cpp
double sinh_val = sinh(1.0); // 双曲正弦
double cosh_val = cosh(1.0); // 双曲余弦
double tanh_val = tanh(1.0); // 双曲正切二、对数函数
2.1 常用对数
cpp
double log10_val = log10(100.0); // 以10为底的对数,结果为2
double log_val = log(2.71828); // 自然对数(以e为底),结果约为1
double log2_val = log2(8.0); // 以2为底的对数,结果为32.2 对数性质应用
cpp
// 换底公式:log_b(a) = ln(a) / ln(b)
double log_base_b = log(a) / log(b);
// 对数运算法则
// log(ab) = log(a) + log(b)
// log(a/b) = log(a) - log(b)
// log(a^b) = b * log(a)三、指数函数
3.1 基本指数函数
cpp
double exp_val = exp(1.0); // e^1,结果约为2.71828
double pow_val = pow(2.0, 10.0); // 2^10,结果为1024
double sqrt_val = sqrt(16.0); // 平方根,结果为4
double cbrt_val = cbrt(8.0); // 立方根,结果为23.2 指数函数应用
cpp
// 计算复利
// A = P * e^(rt)
double principal = 1000.0; // 本金
double rate = 0.05; // 利率
double time = 5.0; // 时间(年)
double amount = principal * exp(rate * time);四、其他数学函数
4.1 绝对值和符号函数
cpp
int abs_int = abs(-10); // 整数绝对值
double abs_double = fabs(-10.5); // 浮点数绝对值
double sign_val = copysign(1.0, -5.0); // 返回第一个参数的值,第二个参数的符号
int signbit_val = signbit(-3.14); // 判断符号位4.2 取整函数
cpp
double floor_val = floor(3.7); // 向下取整,结果为3
double ceil_val = ceil(3.2); // 向上取整,结果为4
double round_val = round(3.5); // 四舍五入,结果为4
double trunc_val = trunc(3.9); // 截断小数部分,结果为34.3 取模和余数
cpp
double fmod_val = fmod(7.5, 3.0); // 浮点取模,结果为1.5
double remainder_val = remainder(7.5, 3.0); // 余数函数4.4 最值函数
cpp
double max_val = max(3.5, 4.2); // 最大值
double min_val = min(3.5, 4.2); // 最小值
// C++11 及以上支持初始化列表
double max_of_many = max({1.0, 2.5, 3.7, 0.8});五、数学常量
cpp
// 圆周率
double pi = M_PI; // 约等于3.141592653589793
// 自然对数底数
double e = M_E; // 约等于2.718281828459045
// 其他常量
double sqrt2 = M_SQRT2; // √2,约等于1.41421356237
double sqrt1_2 = M_SQRT1_2; // 1/√2,约等于0.70710678118
double ln2 = M_LN2; // ln(2),约等于0.69314718056
double ln10 = M_LN10; // ln(10),约等于2.302585093六、随机数生成
cpp
#include <cstdlib>
#include <ctime>
int main() {
// 设置随机种子
srand(time(nullptr));
// 生成0到RAND_MAX之间的随机整数
int rand_int = rand();
// 生成指定范围内的随机整数 [min, max]
int min = 1;
int max = 100;
int range_rand = rand() % (max - min + 1) + min;
// 生成0到1之间的随机浮点数
double rand_double = static_cast<double>(rand()) / RAND_MAX;
return 0;
}