この記事で扱う Excel データは Hyperbolic.xlsx ファイルに入っています。
≫ Hyperbolicブックをダウンロード
双曲線関数
双曲線正弦関数(hyperbolic cosine)と双曲線余弦関数(hyperbolic sine)はそれぞれ双曲線
双曲線正弦関数と双曲線余弦関数は指数関数を用いて
と表すことができます(この表式が正しいことは (1) と (2) を双曲線方程式
(1) から (3) をまとめて双曲線関数と呼びます。定義より明らかに
が成り立っています。
他にも双曲線正割 (hypabolic secant)、双曲線余割 (hypabolic cosecant)、双曲線余接 (hypabolic cotangent) とよばれる関数があって、それぞれ以下のように定義されています。
三角関数の
双曲線関数の微分積分
双曲線関数の微分公式も三角関数の微分公式とよく似ています。
Excelの双曲線関数
Excel で双曲線正弦 (
=SINH(0)
とすれば
が成り立っていることを Excel で確認してみましょう。ダウンロードした Hyperbolic ブックの plot_3 シートには、区間
すべて値が
plot_1 シートには、変数
双曲線正弦関数
漸近線を考慮すると、十分大きな正の
Excel で双曲線正割 (
=SECH(0)
とすれば sech0 の値「1」が返ります。plot_2 シートには双曲線関数
逆双曲線関数
逆双曲線関数(inverse hyperbolic functions)は双曲線関数の逆関数として定義されます。たとえば、双曲線正弦関数
を
となります。
という
となります。変数を
となるので、両辺の自然対数をとって
という表式を得ます。
となります。このままでは二価関数となってしまうので、正符号を採用して、
を逆双曲線正弦関数と定義し、
逆双曲線関数は双曲線 x y = 1 に対応する双曲的扇形の面積に等しいことから面積関数と呼ばれることもあります。arsinh の接頭辞 ar は area(面積)を意味しています。逆三角関数の接頭辞 arc と間違えやすいので注意が必要です。
実は数学の専門書でも arsinh が arcsinh となっていたりするなど、arc という書き方も一般的に定着してしまっているので完全に誤りであるとは言えませんが、国際標準化機構(ISO:the International Organization for Standardization)では双曲線逆正弦を arsinh と定めていて、Excel の英語版公式ホームページでも逆三角関数を
ASIN:arcsine
ACOS:arccosine
ATAN:arctangent
と記述しているのに対して逆双曲線関数を
ASINH:Inverse hyperbolic sine
ACOSH:Inverse hyperbolic cosine
ATANH:Inverse hyperbolic tangent
と書いて、読み方をきちんと分けています。
【Excel】逆双曲線関数
Excel では逆双曲線関数
=ASINH(1)
とすれば、
グラフからわかるように、
双曲線余弦関数と二次関数のグラフの概形を眺めてみると、どちらも下に凸で左右対称なのではよく似ています。しかし、双曲線余弦関数は
という関数をつくってグラフに描いてみました。
今度は双曲線余弦関数
という関数のグラフの概形を描いてみます。
やはり双曲線余弦関数のほうが増加率が大きいので、
の両辺を微分すると
この式から
となるので、
【VBA】双曲線関数
VBA で双曲線関数を使いたいときは、ワークシート関数を呼び出すのが一番簡単です。値を変数に格納する場合はデータ型を倍精度実数型 (Double) で宣言しておきます。たとえば、サブルーチンの中で双曲線正弦関数を計算する場合は以下のようなコードを書きます。
'[VBA]双曲線正弦関数の計算
Sub Hyperbolic_Sine()
Dim x As Double
x = WorksheetFunction.Sinh(1)
Debug.Print x
End Sub
'実行結果:1.1752011936438
他には、Functionマクロとして VBA 独自の双曲線関数を定義する方法もあります。
'[VBA]Hyperbolic Sine
Function Sinh(x As Double) As Double
Sinh = (exp(x) - exp(-x)) / 2
End Function
'[VBA]Hyperbolic Cosine
Function Cosh(x As Double) As Double
Cosh = (exp(x) + exp(-x)) / 2
End Function
'[VBA]Hyperbolic Tangent
Function Tanh(x As Double) As Double
Tanh = Sinh(x) / Cosh(x)
End Function
'[VBA]独自定義した双曲線関数の動作テスト
Sub Hyperbolic_Test()
Debug.Print "Sinh(1) : " & Sinh(0)
Debug.Print "Cosh(1) : " & Cosh(1)
Debug.Print "Tanh(1) : " & Tanh(1)
End Sub
'実行結果:
Sinh(1) : 0
Cosh(1) : 1.54308063481524
Tanh(1) : 0.761594155955765
エクセルや数学に関するコメントをお寄せください