双曲線関数

双曲線関数

双曲線関数

 双曲線余弦 (hyperbolic cosine)双曲線正弦 (hyperbolic sine) および 双曲線正接 (hyperbolic tangent) は、それぞれ次式によって定義されます。
 
\[\begin{align*}&\cosh x=\frac{e^x+e^{-x}}{2}\\[6pt]
&\sinh x=\frac{e^x-e^{-x}}{2}\\[6pt]
&\tanh x=\frac{\sinh x}{\cosh x}\end{align*}\]
 これらの関数を総称して 双曲線関数 (hyperbolic function) とよびます(詳細については 数学教室の記事 を参照してください)。Python では標準モジュールの math、および外部パッケージの NumPy が双曲線関数をサポートしています。

mathモジュールの双曲線関数

 math.cosh(x), math.sinh(x), math.tanh(x) は、それぞれ $\cosh x$, $\sinh x$, $\tanh x$ の値を返します。

# リストA-1
# mathモジュールの双曲線関数

# mathをインポート
import math

# hyperbolic cosine
a = math.cosh(1)

# hyperbolic sine
b = math.sinh(1)

# hyperbolic tangent
c = math.tanh(1)

print("cosh(1) = {}".format(a))
print("sinh(1) = {}".format(b))
print("tanh(1) = {}".format(c))
cosh(1) = 1.5430806348152437
sinh(1) = 1.1752011936438014
tanh(1) = 0.7615941559557649

 

NumPyの双曲線関数

 numpy.cosh(x), numpy.sinh(x), numpy.tanh(x) は、それぞれ $\cosh x$, $\sinh x$, $\tanh x$ を返します。

# リストB-1
# NumPy の双曲線関数

# numpyをインポート
import numpy as np

# 配列xを定義
x = np.array([-1, 0, 1])

# hyperbolic cosine
a = np.cosh(x)

# hyperbolic sine
b = np.sinh(x)

# hyperbolic tangent
c = np.tanh(x)

print("cosh(x) = {}".format(a))
print("sinh(x) = {}".format(b))
print("tanh(x) = {}".format(c))
cosh(x) = [1.54308063 1.         1.54308063]
sinh(x) = [-1.17520119  0.          1.17520119]
tanh(x) = [-0.76159416  0.          0.76159416]

 Matplotlib を使って双曲線関数のグラフを描いてみます。

# リストB-2
# 双曲線関数のグラフ

import matplotlib.pyplot as plt

# データを作成
x = np.linspace(-4, 4, 33)
y1 = np.cosh(x)
y2 = np.sinh(x)
y3 = np.tanh(x)

# データをプロット
fig = plt.figure(figsize = (6, 6))
ax = fig.add_subplot(111)
ax.grid()
ax.set_title("Hyperbolic function", size = 15)
ax.set_xlabel("x", size = 15, labelpad = 10)
ax.set_ylabel("y", size = 15, labelpad = 10)
ax.set_xlim([-4, 4])
ax.set_ylim([-4, 4])
ax.plot(x, y1, color = "red", label = "cosh(x)")
ax.plot(x, y2, color = "blue", label = "sinh(x)")
ax.plot(x, y3, color = "green", label = "tanh(x)")
ax.legend(loc = "lower right", fontsize = 12)

# 画像をPNG形式のファイルに保存
plt.savefig("Hyperbolic.png", bbox_inches = "tight")

 numpy hyperbolic function graph