三角函数总结(范围、角度方式、使用方式等)

分类:

Posted by 白夜行的狼 on December 1, 2020

0. 写在最前面

本文持续更新地址:https://haoqchen.site/2020/12/01/summary-of-trigonomatric-function/

本文主要总结cpp中各种三角函数、反三角函数的输入是角度还是弧度;结果范围是怎么样的;有哪些限制条件等。

这里需要注意,对于C++版本的三角函数和C版本的三角函数而言,两者并没有太大的差距,无论是性能上还是输入输出上。本质上C++和C都是对底层实现的一种封装,如果你测试出了性能上的差别,可能是因为你的时间浪费在了float和double的转换。

如果觉得写得还不错,可以找我其他文章来看看哦~~~可以的话帮我github点个赞呗。 你的Star是作者坚持下去的最大动力哦~~~

1. 三角函数

函数名 语言 输入 返回范围 备注
std::sin CPP <cmath> 弧度 [-1, +1] 1. 如果输入参数超出范围,将返回一个默认值,一般为NaN
2. 如果是下溢导致范围错误,则返回将返回正确结果取整后返回
3. ±无穷及NaN参数将返回NaN
4. 上述异常处理与系统实现有关
5. 整数参数默认转换为double
std::tan CPP <cmath> 弧度   1. 如果参数数量级过大,结果会不准确(C++11后面的版本修复了)
2. 错误处理同std::sin

2. 反三角函数

函数名 语言 输入 返回范围 备注
std::asin CPP <cmath> [-1.0, 1.0] [$-\frac{\pi}{2}$, $\frac{\pi}{2}$] 1. 计算参数的参数的反正弦的主值
2. 如果输入参数不在范围内,将返回一个默认值,一般为NaN
3. 如果是下溢导致范围错误,则返回将返回正确结果取整后返回
4. ±无穷及NaN参数将返回NaN
std::acos CPP <cmath> [-1.0, 1.0] [$0$, $\pi$] 异常处理同 std::asin
std::atan CPP <cmath>   [$-\frac{\pi}{2}$, $\frac{\pi}{2}$] 1. 当输入为$\plusmn\infin$时,输出$\plusmn\frac{\pi}{2}$
2. 输入为NaN时返回NaN
3. 如果是下溢导致范围错误,则返回将返回正确结果取整后返回
std::atan2 ( double y, double x ); CPP <cmath>   [$-\pi$, $\pi$] 1. 默认是double,计算的是$\arctan(\frac{y}{x})$的值,错误处理详见下两图
std::atan2错误处理 std::atan2正负号

待续

后面用到再总结Matlab和Python的

参考


喜欢我的文章的话Star一下呗Star

版权声明:本文为白夜行的狼原创文章,未经允许不得以任何形式转载


如果你觉得这篇文章帮你节省了时间,增长了知识,请支持我写出更多这样的文章