std::acos(std::complex)
来自 cppreference.com
在头文件 <complex> 中定义 |
||
template< class T > complex<T> acos( const complex<T>& z ); |
(自 C++11) | |
计算复数值 z 的复数反余弦。分支割线存在于实轴上的区间 [−1, +1] 之外。
内容 |
[编辑] 参数
z | - | 复数值 |
[编辑] 返回值
如果未发生错误,则返回 z 的复数反余弦,范围为沿虚轴无界、沿实轴为区间 [0, +π] 的条带。
[编辑] 错误处理和特殊值
错误报告与 math_errhandling 一致。
如果实现支持 IEEE 浮点运算,则
- std::acos(std::conj(z)) == std::conj(std::acos(z))
- 如果 z 为
(±0,+0)
,则结果为(π/2,-0)
- 如果 z 为
(±0,NaN)
,则结果为(π/2,NaN)
- 如果 z 为
(x,+∞)
(对于任何有限的 x),则结果为(π/2,-∞)
- 如果 z 为
(x,NaN)
(对于任何非零的有限 x),则结果为(NaN,NaN)
,并且可能引发 FE_INVALID。 - 如果 z 为
(-∞,y)
(对于任何正的有限 y),则结果为(π,-∞)
- 如果 z 为
(+∞,y)
(对于任何正的有限 y),则结果为(+0,-∞)
- 如果 z 为
(-∞,+∞)
,则结果为(3π/4,-∞)
- 如果 z 为
(+∞,+∞)
,则结果为(π/4,-∞)
- 如果 z 为
(±∞,NaN)
,则结果为(NaN,±∞)
(虚部的符号未指定) - 如果 z 为
(NaN,y)
(对于任何有限的 y),则结果为(NaN,NaN)
,并且可能引发 FE_INVALID。 - 如果 z 为
(NaN,+∞)
,则结果为(NaN,-∞)
- 如果 z 为
(NaN,NaN)
,则结果为(NaN,NaN)
[编辑] 注意事项
反余弦(或弧余弦)是一个多值函数,需要在复平面上进行分支切割。分支切割通常放在实轴的线段 (-∞,-1) 和 (1,∞) 上。
弧余弦主值的数学定义为 acos z =1 |
2 |
).
对于任何 z,acos(z) = π - acos(-z).
[编辑] 示例
运行此代码
#include <cmath> #include <complex> #include <iostream> int main() { std::cout << std::fixed; std::complex<double> z1(-2.0, 0.0); std::cout << "acos" << z1 << " = " << std::acos(z1) << '\n'; std::complex<double> z2(-2.0, -0.0); std::cout << "acos" << z2 << " (the other side of the cut) = " << std::acos(z2) << '\n'; // for any z, acos(z) = pi - acos(-z) const double pi = std::acos(-1); std::complex<double> z3 = pi - std::acos(z2); std::cout << "cos(pi - acos" << z2 << ") = " << std::cos(z3) << '\n'; }
输出
acos(-2.000000,0.000000) = (3.141593,-1.316958) acos(-2.000000,-0.000000) (the other side of the cut) = (3.141593,1.316958) cos(pi - acos(-2.000000,-0.000000)) = (2.000000,0.000000)
[编辑] 另请参阅
(C++11) |
计算复数的反正弦 (arcsin(z)) (函数模板) |
(C++11) |
计算复数的反正切 (arctan(z)) (函数模板) |
计算复数的余弦 (cos(z)) (函数模板) | |
(C++11)(C++11) |
计算反余弦 (arccos(x)) (函数) |
将函数 std::acos 应用于 valarray 的每个元素。 (函数模板) | |
C 文档 for cacos
|