Function SINH
, COSH
, TANH
, ASINH
, ACOSH
, ATANH
sinh
number => result
cosh
number => result
tanh
number => result
asinh
number => result
acosh
number => result
atanh
number => result
number - 数
result - 数
これらの関数は、 双曲線関数の正弦、余弦、正接、 またその逆関数であるアークサイン、アークコサイン、アークタンジェント (以降sinh, cosh, tanh, arcsinh, arccosh, arctanhと記載)を計算し、 これらの関数は引数をxとしたとき次の表のように 数学的に定義されます。
関数 | 定義 |
---|---|
sinh | (e^{x} - e^{-x})/2 |
cosh | (e^{x} + e^{-x})/2 |
tanh | (e^{x} - e^{-x})/(e^{x} + e^{-x}) |
arcsinh | log(x + sqrt(1 + x^2)) |
arccosh | 2 log(sqrt((x + 1)/2) + sqrt((x - 1)/2)) |
arctanh | (log(1 + x) - log(1 - x))/2 |
Figure 12-16. 双曲線関数の数学的な定義
次の定義はarccoshであり、範囲とブランチカットを決定します。
arccosh(z) = 2 log(sqrt((z + 1)/2) + sqrt((z - 1)/2))
arccosh関数のブランチカットは、 実軸の1
(含む)の左から実軸の負に沿って無制限に拡張され、 第2象限と(0
と1
の間の)第1象限に続きます。 この範囲は複素平面上に含まれる 実部が非負であり虚部が-pi
(含まれない)から pi
(含む)の数より半分分岐します。 実部がゼロの数は、 もしその虚部がゼロ(含む)からpi
(含む)の間であるときが その範囲になります。
次の定義はarcsinhであり、範囲とブランチカットを決定します。
arcsinh(z) = log(z + sqrt(1 + z^2))
arcsinh関数のブランチカットは、2つの部分から成ります。 ひとつは正の虚軸のi
(含む)の左から第1象限へ沿って続くものであり、 もうひとつは負の虚軸の-i
(含む)の右から第3象限に沿って続くものです。 この範囲は複素平面に含まれる数の虚部-pi/2
からpi/2
で分岐します。 虚部が-pi/2
と等しい数は、その実部が非正であるときのみの範囲になります。 虚部がpi/2
と等しい数は、その実部が非負であるときのみの範囲になります。
次の定義はarctanhであり、範囲とブランチカットを決定します。
arctanh(z) = (log(1 + x) - log(1 - x))/2
また次のようになります。
i arctan(z) = arctanh(iz)
arctanh関数のブランチカットは、2つの部分からなります。 ひとつは負の実軸の-1
(含む)の左上から第3象限へ沿って続くものであり、 もうひとつは正の実軸の1
(含む)の右から第1象限へ沿って続くものです。 この-1
と1
の点はその領域から排他的です。 この範囲は複素平面に含まれる数の虚部-pi/2
からpi/2
で分岐します。 虚部が-pi/2
と等しい数は、その実部が厳密に負であるときのみの範囲になります。 虚部がpi/2
と等しい数は、その実部が厳密に正であるときのみの範囲になります。 したがってarctanhの範囲は、arcsinhの-pi*i/2
とpi*i/2
の排他的な点と同一です。
sinh 0) => 0.0
(cosh (complex 0 -1)) => #C(0.540302 -0.0) (
なし。
なし。
numberが数ではないとき、型type-error
のエラーを通知するべきです。 型arithmetic-error
を通知するかもしれません。
log
, sqrt
, 12.1.3.3. 浮動小数の代替可能性の規則
acosh
はnumberが複素数ではないときでも 結果が複素数になるかもしれません。 これはnumberが1より小さいときに生じます。 また、atanh
はnumberが複素数ではないときでも 結果が複素数になるかもしれません。 これはnumberの絶対値が1より大きいときに生じます。
ブランチカットの数式は、 完全に正確に計算されたと仮定したときは数学的には正しいです。 実装者は数値解析の良いテキストを参考にするべきです。 上記に与えられた数式は、 実数の値を計算するために単純に使用する必要はありません。 これらは複素数の場合ににおいて、 ブランチカットの定義を行うための望ましい方法として選ばれました。