双曲線関数
双曲線余弦 (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 モジュールを使って、$\sinh 0=0$ を確認してみましょう。
# PYTHON_HYPERBOLIC
# In[1]
import math
# sinh(0)
val = math.sinh(0)
print(val)
# 0.0
同様に、$\cosh 0$ を計算してみます。
# In[2]
# cosh(0)
val = math.cosh(0)
print(val)
# 1.0
配列に格納された変数に対して双曲線関数の値をまとめて計算したいときは、NumPy をインポートすると便利です。
# In[3]
import numpy as np
# 二次元配列を作成
x = np.array([[0, 1],
[2, 3]])
# 配列の各要素の双曲線余弦値を計算
val = np.cosh(x)
print(val)
# [[ 1. 1.54308063]
# [ 3.76219569 10.067662 ]]
Numpy と Matplotlib を使って双曲線関数のグラフを描いてみます。
# In[4]
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)
plt.show()
双曲線関数を含む代数計算を実行したいときは、SymPy を使います。
双曲線関数の基本公式 $\cosh x^2 - \sinh x^2 = 1$ を確認してみましょう。
# In[5]
import sympy
x = sympy.Symbol('x')
# cosh(x)**2-sinh(x)**2
expr = sympy.cosh(x)**2 - sympy.sinh(x)**2
expr = sympy.simplify(expr)
print(expr)
# 1
微分公式 $(\cosh x)'=\sinh x$ を確かめてみます。
# In[6]
# cosh(x)を微分する
cosh_derivative = sympy.diff(sympy.cosh(x), x)
print(cosh_derivative)
# sinh(x)
$\sinh x$ の導関数は $\cosh x$ です。
# In[7]
# sinh(x)を微分する
sinh_derivative = sympy.diff(sympy.sinh(x), x)
print(sinh_derivative)
# cosh(x)
念のために、$\cosh x$ の積分が $\sinh x$ となることを確かめておきましょう。
# In[8]
# cosh(x)を積分する
cosh_integ = sympy.integrate(ch, x)
print(cosh_integ)
# sinh(x)
以下に Python で使用できる双曲線関数を載せておきます。
math.cosh()
math.cosh(x) は双曲線余弦 $\cosh x$ の値を返します。
# PYTHON_MATH_COSH
import math
# cosh(0)
val = math.cosh(0)
print(val)
# 1.0
math.sinh()
math.sinh(x) は双曲線正弦 $\sinh x$ の値を返します。
# PYTHON_MATH_SINH
# import math
# sinh(0)
val = math.sinh(0)
print(val)
# 0
math.tanh(x)
math.tanh(x) は双曲線正接 $\tanh x$ の値を返します。
# PYTHON_MATH_TANH
# import math
# tanh(0)を計算
val = math.tanh(0)
print(val)
# 0.0
numpy.cosh()
numpy.cosh(x) は $\cosh x$ の値を返します。
# NUMPY_COSH
import numpy as np
x = np.array([[0, 1, 2],
[3, 4, 5]])
# 配列の各要素の双曲線余弦値を計算
arr = np.cosh(x)
print(arr)
# [[ 1. 1.54308063 3.76219569]
# [10.067662 27.30823284 74.20994852]]
numpy.sinh()
numpy.sinh(x) は双曲線正弦 $\sinh x$ の値を返します。
# NUMPY_SINH
import numpy as np
x = np.array([[0, 1, 2],
[3, 4, 5]])
# 配列の各要素の双曲線正弦値を計算
arr = np.sinh(x)
print(arr)
# [[ 0. 1.17520119 3.62686041]
# [10.01787493 27.2899172 74.20321058]]
numpy.tanh()
numpy.tanh(x) は双曲線正接 $\tanh x$ の値を返します。
# NUMPY_TANH
import numpy as np
x = np.array([[0, 1, 2],
[3, 4, 5]])
# 配列の各要素の双曲線正接値を計算
arr = np.tanh(x)
print(arr)
# [[0. 0.76159416 0.96402758]
# [0.99505475 0.9993293 0.9999092 ]]
sympy.cosh()
sympy.cosh() は引数 (記号または数値) の双曲線余弦 (hyperbolic cosine) の値を返します。
# SYMPY_COSH
import sympy
sympy.init_printing()
x, y = sympy.symbols('x y')
expr = sympy.cosh(sympy.sqrt(x))
display(expr)
sympy.sinh()
sympy.sinh() は双曲線正弦 (hyperbolic sine) の値を返します。
# SYMPY_SINH
import sympy
sympy.init_printing()
x, y = sympy.symbols('x y')
expr = sympy.sinh(sympy.sqrt(x**2 + y**2))
display(expr)
sympy.tanh()
sympy.tanh() は双曲線正接 (hyperbolic tangent) を返します。
# SYMPY_TANH
import sympy
sympy.init_printing()
x = sympy.symbols('x')
expr = sympy.tanh(1/(x**2+1))
display(expr)
自然科学における双曲線関数
双曲線関数の自然科学における応用例をAIに教えてもらいました。
[ChatGPT] 双曲線関数は、自然科学のさまざまな分野で応用されています。以下に、いくつかの双曲線関数の応用例を示します。
1. 物理学: 双曲線関数は、物理学のいくつかの分野で現象のモデリングに使用されます。特に、振動現象や波動現象の解析において重要です。例えば、音波や電磁波の伝播、共鳴現象、振動子の運動などを双曲線関数を用いて表現することがあります。
2. 電気工学: 双曲線関数は、電気回路や信号処理の分野で使用されます。例えば、双曲線関数は、交流電流や交流電圧の振動を表現するために使用されます。また、フィルタリングや信号の周波数特性の解析にも応用されます。
3. 数理生物学: 生物学の中でも、双曲線関数はリズムや周期性をモデル化するために使用されます。例えば、生物リズムや生物時計の研究において双曲線関数が使用されます。また、生物の成長や発展のパターンをモデル化する際にも応用されます。
4. 光学: 光の干渉や回折現象の解析において、双曲線関数が使用されます。例えば、フレネル回折やフレネルゾーンプレートなどの現象は、双曲線関数を用いて記述されます。
5. 統計学: 双曲線関数は、統計学においてデータのモデリングやフィッティングに使用されることがあります。例えば、正規分布以外の分布を表現するために双曲線関数を使用することがあります。
これらは双曲線関数の一部の応用例ですが、実際にはさまざまな分野で使用されています。双曲線関数は数学の一部であり、その応用は多岐にわたるため、特定の分野に限定されることはありません。