mathモジュールの指数関数
mathモジュールをインポートすると、math.e, math.exp(x), math.expm1(x) を使えるようになります。
math.e
math.e にはネイピア数 (自然対数の底) の近似値が格納されています。
# PYTHON_EXP_01
import math
# ネイピア数e
x = math.e
# math.eの桁数
y = len(str(math.e)) - 1
print("e = {}".format(x))
print("桁数 {}".format(y))
e = 2.718281828459045 桁数 16
math.exp()
math.exp(x) は e を底とする 指数関数 ex の値を返します。
受け取った引数は float型に変換されます。complex型は float型に変換できないので、複素数を引数に指定することができません。
# PYTHON_EXP_02
import math
a = math.exp(1)
b = math.exp(2)
c = math.exp(-1)
print("e = {}".format(a))
print("e**2 = {}".format(b))
print("e**(-1) = {}".format(c))
e = 2.718281828459045 e**2 = 7.38905609893065 e**(-1) = 0.36787944117144233
math.e と math.exp(1) が一致することを確認しておきます。
# PYTHON_EXP_03
import math
a = math.e
b = math.exp(1)
print(a == b)
True
math.expm1()
math.expm1(x) は指数関数 exp(x) から 1 を引いた値を返します。
非常に小さな x で exp(x) - 1 を計算すると、減算により桁落ちしますが、expm1()関数は精度を保ちます。下のサンプルコードでは x = 1.0e-5 として、exp(x) - 1 と math.expm1(x) を計算させています。
# PYTHON_EXP_04
import math
a = math.exp(1.0e-5)-1
b = math.expm1(1.0e-5)
print("a = {}".format(a))
print("b = {}".format(b))
a = 1.0000050000069649e-05 b = 1.0000050000166667e-05
NumPy の指数関数
NumPyをインポートすると、numpy.e, numpy.exp(x) を扱うことができます。NumPy の関数は ndarray という多次元配列を引数として与えると ndarray で返すユニバーサル関数です。
numpy.e
numpy.e はネイピア数(自然対数の底) の近似値を呼び出します。
# PYTHON_EXP_05
import numpy as np
# ネイピア数(自然対数の底)
print(np.e)
2.718281828459045
numpy.exp()
numpy.exp(x) は指数関数 ex を返します。
# PYTHON_EXP_06-1
import numpy as np
# 変数 x = 0, 1, 2
x = np.array([0, 1, 2])
# exp(0), exp(1), exp(2) を計算
y = np.exp(x)
print(y)
[1. 2.71828183 7.3890561]
numpy.exp(x) の引数 x には複素数を指定することもできます。
# PYTHON_EXP_06-2
# 複素数変数を定義
z = 5 + 11j
exp_z = np.exp(z)
print(exp_z)
(0.6568318196405344-148.411705625828j)
複素解析学において、複素変数 z = x + iy の指数関数 exp(z) は
によって定義されています。
指数関数のグラフ
Matplotlib を読み込んで 指数関数のグラフ を描画させるサンプルコードです。
Jupyter Notebook などで使ってみてください。
# PYTHON_EXP_07
# 指数関数y=exp(x)のグラフ
# モジュールをインポート
import numpy as np
import matplotlib.pyplot as plt
# フィギュアを設定
fig = plt.figure()
# グリッド線を表示
plt.style.use("ggplot")
# グラフ描画領域を追加
ax = fig.add_subplot(111)
# グラフタイトルを設定
ax.set_title("y = exp(x)", fontsize = 16)
# x軸, y軸のラベルを設定
ax.set_xlabel("x", fontsize = 16)
ax.set_ylabel("y", fontsize = 16)
# xのデータを用意
x = np.arange(-2, 4, 0.1)
# yのデータを用意
y = np.exp(x)
# データをプロット
ax.plot(x, y)
SymPy の指数関数
SymPy をインポートすると記号を使って指数関数を計算できます。
sympy.exp()
sympy.exp() はネイピア数 e を底とする指数関数を返します。
# PYTHON_EXP_08
import sympy
# 記号xを定義
sympy.var('x y')
# f(x)=exp(x)
f = sympy.exp(x)
# g(y)=exp(y)
g = sympy.exp(y)
# h=f(x)g(y)
h = sympy.simplify(f*g)
print(h)
exp(x + y)
コメントを書く