Excel VBA 数学教室ではアフィリエイトプログラムを利用して商品を紹介しています。

【Excel】双曲線関数(COSH, SINH, TANH)

この記事で扱う Excel データは Hyperbolic.xlsx ファイルに入っています。
≫ Hyperbolicブックをダウンロード

双曲線関数

双曲線正弦関数(hyperbolic cosine)双曲線余弦関数(hyperbolic sine)はそれぞれ双曲線 X2Y2=1 上の X 座標および Y 座標として定義されています。

Excel 双曲線のグラフ

双曲線正弦関数と双曲線余弦関数は指数関数を用いて
 (1)X=coshx=ex+ex2(2)Y=sinhx=exex2
と表すことができます(この表式が正しいことは (1) と (2) を双曲線方程式 X2Y2=1 に代入して確かめることができます)。また、双曲線正接関数(hyperbolic tangent)は次のように定義します。
(3)tanhx=sinhxcoshx=exexex+ex
(1) から (3) をまとめて双曲線関数と呼びます。定義より明らかに
(4)cosh2xsinh2x=1
が成り立っています。sinhxtanhx は奇関数、 coshx は偶関数です。グラフを描くと下図のようになります。

Excel 双曲線関数 SINH, COSH, TANH

他にも双曲線正割 (hypabolic secant)、双曲線余割 (hypabolic cosecant)、双曲線余接 (hypabolic cotangent) とよばれる関数があって、それぞれ以下のように定義されています。
(5)sechx=1coshx=2ex+ex(6)cschx=1sinhx=2exex(7)cothx=coshxsinhx=e2x+1e2x1
三角関数の cosxsinx が単位円上の点であるのに対し、双曲線関数の coshxsinhx は双曲線上の点です。双曲線関数の公式群は三角関数の公式ととてもよく似ています。以下に双曲線関数の基本公式一覧を載せておきます。
(8)sinh(x±y)=sinhxcoshy±coshxsinhy(9)cosh(x±y)=coshxcoshy±sinhxsinhy(10)tanh(x±y)=tanhx±tanhy1±tanhxtanhy(11)sinh2x=2sinhxcoshx(12)cosh2x=2cosh2x1=1+2sinh2x(13)sinhx+sinhy=2sinhx+y2coshxy2(14)sinhxsinhy=2sinhxy2coshx+y2(15)coshx+coshy=2coshx+y2coshxy2(16)coshxcoshy=2sinhx+y2sinhxy2(17)2sinhxsinhy=cosh(x+y)cosh(xy)(18)2sinhxcoshy=sinh(x+y)sinh(xy)(19)2coshxsinhy=sinh(x+y)sinh(xy)(20)2coshxcoshy=cosh(x+y)cosh(xy)

双曲線関数の微分積分

双曲線関数の微分公式も三角関数の微分公式とよく似ています。sinhxcoshx は互いに導関数となっています。
(21)(sinhax)=acoshax(22)(coshax)=asinhax(23)(tanhax)=acosh2ax(24)coshaxdx=1asinhax(25)sinhaxdx=1acoshax(26)tanhaxdx=1alog(coshax)

Excelの双曲線関数

Excel で双曲線正弦 (sinhx)、双曲線余弦 (coshx)、双曲線正接 (tanhx) を計算するときには、それぞれ SINH, COSH, TANH を使います。たとえば

=SINH(0)

とすれば sinh0 の値「0」が返ります。任意の x について
cosh2xsinh2x=1
が成り立っていることを Excel で確認してみましょう。ダウンロードした Hyperbolic ブックの plot_3 シートには、区間 [5, 5] の範囲で cosh2xsinh2x を計算しています (下図)。

cosh^2x-sinh^2=1

すべて値が 1 になっていることが確認できます。このように、coshxsinhx は双曲線上の点として定義されているので、媒介変数 t に適当な範囲の値を与えて、cosht および cosht に対して sinht の値をプロットすると、双曲線が描かれます。このグラフのデータは plot_0 シートにあります (下図)。

Excel 双曲線のグラフ

plot_1 シートには、変数 x に対する双曲線関数 sinhx, coshx, tanhx のグラフの概形が載っています (下図)。

Excel 双曲線関数 SINH, COSH, TANH

双曲線正弦関数 sinhxx では ex0 になるので、漸近線一つは y=ex/2 です。また逆に x では ex0 になるので、もう一つ漸近線は y=ex/2 です。同様に考えて、coshx の漸近線は ex/2ex/2 です。sinhxtanhx は奇関数、coshx は偶関数です。

漸近線を考慮すると、十分大きな正の x に対して、sinhxcoshx は、ほとんど同じ値をとります。しかし、cosh2xsinh2x については、x がどれほど大きくなっても常にその差 1 をキープします。この事実は直感に反していますが、極限操作ではこのようなことが、しばしば起こります。

Excel で双曲線正割 (sechx)、双曲線余割 (cschx)、双曲線余接 (cothx) を計算するときは、それぞれ SECH, CSCH, COTH を使います。たとえば

=SECH(0)

とすれば sech0 の値「1」が返ります。plot_2 シートには双曲線関数 sechx, cschx, cothx のグラフが載っています (下図)。

Excel 双曲線関数 SECH, CSCH, COTH

逆双曲線関数

逆双曲線関数(inverse hyperbolic functions)は双曲線関数の逆関数として定義されます。たとえば、双曲線正弦関数
(27)y=exex2
x について解いてみましょう。ex=t とおくと、
(27)2y=t1t
となります。t について整理すると
(27)t22yt1=0
という t の二次方程式が得られるので、これを解いて
(30)t=y±y2+1
となります。変数を t から x に戻すと
(31)ex=y±y2+1
となるので、両辺の自然対数をとって
(32)x=log(y±y2+1)
という表式を得ます。xy を入れ替えると、
(33)y=log(x±x2+1)
となります。このままでは二価関数となってしまうので、正符号を採用して、
(34)y=log(x+x2+1)
を逆双曲線正弦関数と定義し、arsinhx という記号で表します。双曲線余弦と双曲線正接の逆関数も同様に定義して、それぞれ arcoshx, artanhx で表します:
(35)arsinhx=log(x+x2+1)(36)arcoshx=log(x+x21)(1x)(37)artanhx=12 log(1+x1x)(1<x<1)
逆双曲線関数は双曲線 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 では逆双曲線関数 arsinhx, arcoshx, artanhx をそれぞれ、ASINH, ACOSH, ATANH を使って計算します。たとえば

=ASINH(1)

とすれば、arsinh1 を計算して 0.881 を返します。Hyperbolic ブックの plot_4 シートには逆双曲線関数のグラフがプロットされています。

Excel 逆双曲線関数 ASINH, ACOSH, ATAH

グラフからわかるように、arsinhx は全ての実数 x で定義されていますが、arcoshx1x, artanhx1<x<1 の範囲に限定される関数です。

双曲線余弦関数と二次関数のグラフの概形を眺めてみると、どちらも下に凸で左右対称なのではよく似ています。しかし、双曲線余弦関数は x± で指数関数 e±x/2 として振る舞うので、はるかに増加率の大きな関数です。試しに、coshx から x2+1 を引いて
y=coshxx21
という関数をつくってグラフに描いてみました。

双曲線余弦引く2次関数グラフ

y=coshx (青い点線) と y=x21 (緑の点線) の間を縫うような曲線となっています。先にも述べたように指数関数のほうが二次関数より増加率が大きいので、全体としては x± で発散する関数となっています。しかし、|x| が小さい範囲では二次関数のほうが大きな値をとります。上のグラフを見ると、2<x<2 のあたりでは二次関数に引張られて一時的に値を落として極値を 2 つ作っています。

今度は双曲線余弦関数 coshxx2 で割って
 y=coshxx2=ex+ex2x2(0<x)
という関数のグラフの概形を描いてみます。

双曲線余弦割る2次関数グラフ

やはり双曲線余弦関数のほうが増加率が大きいので、x±± に発散する関数となっています。最小値は x=2 のあたりにありそうです。Excel ばかり使わずに、たまには少し手を動かして確認しておきましょう。両辺に x2 をかけて
2x2y=ex+ex
の両辺を微分すると
4xy+2x2y=exex
この式から y を求めると、
y=exex2x24xy2x2=y2yx=y(12x)
となるので、y=0 とおくと、ちょうど x=2 で最小値をとることがわかります。

【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

エクセルや数学に関するコメントをお寄せください