数学

計算で扱うライブラリのインポート文

import numpy as np
import sympy as sym
import math

SymPy

数学の変数や因数分解、微分などができるライブラリ。

import sympy as sym

シンボルの定義 | .symbols( シンボル名 )

# シンボル(変数)の定義
y = sym.symbols('y')

# 複数同時に定義
x, a, b = sym.symbols('x, a, b')

# 式の定義
formula = 3*(x+2)**2 + 5

定義したシンボルの型 : sympy.core.symbol.Symbol

単数の Symbol だけ頭文字が大文字。

Symbol()1つのみの変数を作る。返り値を受け取る変数が必要。
symbols()複数の変数を作る。 返り値を受け取る変数が必要。
単体の変数作成にも使えるので、こっち覚えとけばよさそう。
var() 返り値を受け取る変数が必要ない。関数内で使うときバッティングに注意。
トップレベルだと var を使ったほうが楽。

値の代入 | .subs ( シンボル名, 値 )

# 値の代入
formula.subs(x, 1)

# 複数の値を同時に代入
formula.subs([(x, 1), (y, 2)])

方程式 | .solve ( 式, 求めたい値)

\(ax+b=0\) の \(x\) についての方程式

x, a, b = sym.symbols('x, a, b')

# 方程式
# sym.solve( 式, 求めたい変数 )
val = sym.solve (a*x+b, x)
print(val)

解の公式

$$\LARGE
x = \frac{-b + \sqrt{b^2}-4ac}{2a}\\
 \\
\LARGE x = \frac{-b - \sqrt{b^2}-4ac}{2a}
$$

# これで上記の解の公式が python コードででてくる
x, a, b, c = sym.symbols('x, a, b, c')
val = sym.solve (a*x**2 +b*x + c, x)
print(val)

展開 / 因数分解

展開 | .expand ( 式 )

formula = 3*(x+2)**2 + 5

# 式の展開
formula_expand = sym.expand(formula)

因数分解 | .factor ( 式 )

formula = x * b + x + b + 1

# 因数分解
formula_factor = sym.factor(formula)

平方根 | .root ( 値や式 )

$$\LARGE \sqrt{x}$$

# SymPy
func = sym.root(x, 2)

その他の書き方

$$\LARGE \sqrt{\sqrt{x}} \,=\, x^\frac{1}{4}\,= \,x^{0.25}$$

print(sym.root(sym.root(x, 2), 2))
# -> x**(1/4)

絶対値 | .abs ( 値や式 )

$$\LARGE |x|$$

# 組み込み関数
abs = abs(x)

# math
abs = math.fabs(x)

# numpy
abs = numpy.abs(x)

微分

微分はグラフの拡大。

導関数 | .diff ( 式 )

$$\LARGE f' = \lim_{h \to 0} \frac{f (x + h) - f(x)}{h}$$

fomula = 4*x**2

# 微分
fomula _diff = sym.diff(fomula)