C++程式:求給定值的雙曲反正弦


雙曲函式使用雙曲線而不是圓來定義,與普通的三角函式類似。它根據給定的弧度角返回雙曲正弦函式中的比率引數。但要進行相反的操作,或者換句話說,如果我們想根據雙曲正弦值計算角度,我們需要反雙曲三角運算,例如雙曲反正弦運算。

本教程將演示如何在C++中使用雙曲反正弦(asinh)函式,利用雙曲正弦值計算弧度角度。雙曲反正弦運算遵循以下公式:

$$\mathrm{sinh^{-1}x\:=\:ln(x\:+\:\sqrt{x^2\:+\:1})},其中\:ln\:是自然對數\:(log_e \: k)$$

asinh()函式

可以使用asinh()函式根據雙曲正弦值計算角度。此函式包含在C++標準庫中。在使用此函式之前,我們必須匯入cmath庫。此方法返回以弧度表示的角度,並接受正弦值作為引數。以下使用簡單的語法:

語法

#include < cmath >
asinh( <hyperbolic sine value> )

演算法

  • 輸入雙曲正弦值x
  • 使用asinh( x ) 計算sinh−1(x)
  • 返回結果。

示例

#include <iostream> #include <cmath> using namespace std; float solve( float x ) { float answer; answer = asinh( x ); return answer; } int main() { float angle, ang_deg; angle = solve( 2.3013 ); ang_deg = angle * 180 / 3.14159; cout << "The angle (in radian) for given hyperbolic sine value 2.3013 is: " << angle << " = " << ang_deg << " (in degrees)" << endl; angle = solve( 11.5487 ); ang_deg = angle * 180 / 3.14159; cout << "The angle (in radian) for given hyperbolic sine value 11.5487 is: " << angle << " = " << ang_deg << " (in degrees)" << endl; angle = solve( 0.86867 ); ang_deg = angle * 180 / 3.14159; cout << "The angle (in radian) for given hyperbolic sine value 0.86867 is: " << angle << " = " << ang_deg << " (in degrees)" << endl; angle = solve( -0.86867 ); ang_deg = angle * 180 / 3.14159; cout << "The angle (in radian) for given hyperbolic sine value - 0.86867 is: " << angle << " = " << ang_deg << " (in degrees)" << endl; }

輸出

The angle (in radian) for given hyperbolic sine value 2.3013 is: 1.5708 = 90.0001 (in degrees)
The angle (in radian) for given hyperbolic sine value 11.5487 is: 3.14159 = 180 (in degrees)
The angle (in radian) for given hyperbolic sine value 0.86867 is: 0.785397 = 45 (in degrees)
The angle (in radian) for given hyperbolic sine value - 0.86867 is: -0.785397 = -45 (in degrees)

asinh()方法在這種情況下接收雙曲正弦值,並以弧度格式返回角度。我們使用下面的公式將此輸出從弧度轉換為度數。

$$\mathrm{\theta_{deg}\:=\:\theta_{rad}\:\times\frac{180}{\pi}}$$

結論

為了使用正弦值進行反雙曲運算,我們使用cmath包中的asinh()函式。此函式在接收雙曲正弦值作為輸入後,輸出以弧度表示的所需角度。在較舊版本的C和C++中,返回型別為double;較新版本的C++還為float和long double使用了過載形式。當整數作為引數傳遞時,asinh()函式將在將輸入引數轉換為double型別後被呼叫。

更新於:2022年10月19日

瀏覽量:152

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告