CppDS.com

C++ 98 11 14 17 20 手册

std::acosh(std::complex)

来自cppreference.com
< cpp‎ | numeric‎ | complex
定义于头文件 <complex>
template< class T >
complex<T> acosh( const complex<T>& z );
(C++11 起)

计算复数值 z 的复反双曲余弦,分支切割在沿实轴小于 1 的值上。

参数

z - 复数值

返回值

若不出现错误,则返回 z 的复反双曲余弦,沿实轴在区间 [0; ∞) 中,而沿虚轴在区间 [−iπ; +iπ] 中。

错误处理及特殊值

报告的错误与 math_errhandling 一致。

若实现支持 IEEE 浮点算术,则

  • std::acosh(std::conj(z)) == std::conj(std::acosh(z))
  • z(±0,+0) ,则结果为 (+0,π/2)
  • z(x,+∞) (对于任何有限 x ),则结果为 (+∞,π/2)
  • z(x,NaN) (对于任何[1]有限 x ),则结果为 (NaN,NaN) 并可能引发 FE_INVALID
  • z(-∞,y) (对于任何有限正 y ),则结果为 (+∞,π)
  • z(+∞,y) (对于任何有限正 y ),则结果为 (+∞,+0)
  • z(-∞,+∞) ,则结果为 (+∞,3π/4)
  • z(±∞,NaN) ,则结果为 (+∞,NaN)
  • z(NaN,y) (对于任何有限 y ),则结果为 (NaN,NaN) 并可能引发 FE_INVALID
  • z(NaN,+∞) ,则结果为 (+∞,NaN)
  • z(NaN,NaN) ,则结果为 (NaN,NaN)
  1. C11 DR471 ,这只对非零 x 成立。若 z(0,NaN) ,则结果应为 (NaN,π/2)

注意

尽管 C++ 标准命名此函数为“复弧双曲余弦”,双曲函数的反函数是面积函数。其参数为双曲扇形的面积,而非弧长。正确名称是“复反双曲余弦”,和更少见的“复面积双曲余弦”。

反双曲余弦是多值函数,在复平面上要求分支切割。约定将分支切割置于实轴的线段 (-∞,+1) 上。

复反双曲余弦主值的数学定义是 acosh z = ln(z + z+1 z-1)

对于任何 z , acosh(z) =
z-1
1-z
acos(z)
,或在复平面上半部简单地为 i acos(z)

示例

#include <iostream>
#include <complex>
 
int main()
{
    std::cout << std::fixed;
    std::complex<double> z1(0.5, 0);
    std::cout << "acosh" << z1 << " = " << std::acosh(z1) << '\n';
 
    std::complex<double> z2(0.5, -0.0);
    std::cout << "acosh" << z2 << " (the other side of the cut) = "
              << std::acosh(z2) << '\n';
 
    // 在上半平面, acosh = i acos 
    std::complex<double> z3(1, 1), i(0, 1);
    std::cout << "acosh" << z3 << " = " << std::acosh(z3) << '\n'
              << "i*acos" << z3 << " = " << i*std::acos(z3) << '\n';
}

输出:

acosh(0.500000,0.000000) = (0.000000,-1.047198)
acosh(0.500000,-0.000000) (the other side of the cut) = (0.000000,1.047198)
acosh(1.000000,1.000000) = (1.061275,0.904557)
i*acos(1.000000,1.000000) = (1.061275,0.904557)

参阅

计算复数的反余弦( arccos(z)
(函数模板)
计算复数的反双曲正弦( arsinh(z)
(函数模板)
计算复数的反双曲正切( artanh(z)
(函数模板)
计算复数的双曲余弦( cosh(z)
(函数模板)
(C++11)(C++11)(C++11)
计算反双曲余弦( arcosh(x)
(函数)
关闭