[SymPy] 使用できる主な関数

[SymPy] 使用できる主な関数

 SymPy をインポートすると様々な関数を使えるようになります。
 その中からよく使われるものを紹介します。ここに掲載されたもの以外にも数学で使用される関数のほとんどは使えるはずなので、必要に応じて SymPy公式ドキュメント で探してみてください。当サイトでも今後の数値計算で特殊関数などを使用する場合には、その都度説明します。

指数関数

 sympy.exp() はネイピア数 e を底とする指数関数を計算します。

# 指数関数

# sympyをインポート
import sympy

# 記号xを定義
sympy.var('x')

# f(x) = exp(x)
func = sympy.exp(x)

print("f(x) = {}".format(func))
print("f(1) = {}".format(func.subs(x, 1)))
print("f(1/2) = {}".format(func.subs(x, sympy.Rational(1,2))))
f(x) = exp(x)
f(1) = E
f(1/2) = exp(1/2)

 

対数関数

 sympy.log() はネイピア数 e を底とする対数関数を計算します。

# 対数関数

# sympyをインポート
import sympy

# 記号xを定義
sympy.var('x')

# 自然対数の底(ネイピア数)
e = sympy.E

# f(x) = log(x)
func = sympy.log(x)

print("f(x) =", func)
print("f(e) =", func.subs(x, e))
print("f(1/e) =", func.subs(x, 1/e))
f(x) = log(x)
f(e) = 1
f(1/e) = -1

 

平方根

 sympy.sqrt(x) は x の平方根を返します。

# x の平方根

# sympyをインポート
import sympy

# 記号xを定義
sympy.var('x')

# f(x) = √x
func = sympy.sqrt(x)

print("f(x) =", func)
print("f(25) =", func.subs(x, 25))
f(x) = sqrt(x)
f(25) = 5

 

n 乗根

 sympy.root(x, n) は x の n乗根を返します。

# x の 3乗根

# sympyをインポート
import sympy

# 記号xを定義
sympy.var('x')

# f(x) = x**(1/3)
func = sympy.root(x, 3)

print("f(x) =", func)
print("f(81) =", func.subs(x, 27))
f(x) = x**(1/3)
f(81) = 3

 

三角関数

 sympy.cos(x), sympy.sin(x), sympy.tan(x) はそれぞれ x の余弦(コサイン)、正弦(サイン)、正接(タンジェント)を返します。

# 余弦関数

# sympyをインポート
import sympy

# 記号xを定義
sympy.var('x')

# 円周率
pi = sympy.pi

# f(x) = cosx
func = sympy.cos(x)

print("f(x) =", func)
print("f(pi) =", func.subs(x, pi))
f(x) = cos(x)
f(pi) = -1

 

双曲線関数

 sympy.cosh(x), sympy.sinh(x), sympy.tanh(x) は x の双曲線余弦 (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}=\frac{e^x-e^{-x}}{e^x+e^{-x}}\end{align*}\] 

# 双曲余弦関数

# sympyをインポート
import sympy

# 記号xを定義
sympy.var('x')

# f(x) = cosh(x)
func = sympy.cosh(x)
func_1 = func.subs(x, 1)

print("f(x) =", func)
print("f(1) =", func_1)
print("f(1) =", sympy.N(func_1))
f(x) = cosh(x)
f(1) = cosh(1)
f(1) = 1.54308063481524

 

階乗と二重階乗

 sympy.factorial(x) は x の階乗を、sympy.factorial2(x) は x の二重階乗を返します。階乗は次式で定義されます。

  $n!=n\,(n-1)\,(n-2) \cdots 2 \cdot 1, \quad 0!=1$

 二重階乗は次のように定義されています。

  $n!!=n\,(n-2)\,(n-4) \cdots 3 \cdot 1$ (n が奇数)
  $n!!=n\,(n-2)\,(n-4) \cdots 4 \cdot 2$ (n が偶数)
  $0!!=(-1)!!=1$ 

# 階乗と二重階乗

# sympyをインポート
import sympy

# 記号nを定義
sympy.var('n')

# f(n) = n!
f = sympy.factorial(n)

# g(n) = n!!
g = sympy.factorial2(n)

print("f(n) =", f)
print("f(9) = 9! =", f.subs(n, 9))
print("g(n) =", g)
print("g(9) = 9!! =", g.subs(n, 9))
f(n) = factorial(n)
f(9) = 9! = 362880
g(n) = factorial2(n)
g(9) = 9!! = 945