SymPyとは、数式処理(symbolic mathematis)を行うためのパッケージです。
pipインストール可能です。
pip install sympy
次のような計算が数式処理の最もベーシックなものです。
In [1]:
import sympy
# 記号の定義
x, y = sympy.symbols('x y')
# 式の定義
expr = 2 * x + y
print('定義された式:\n', expr)
# x, y に数値を代入
a1 = expr.subs([(x, 4), (y, 3)])
print('\nx=4, Y=3の場合:\n', a1)
a2 = expr - y
print('\nexpr から y をマイナス:\n', a2)
In [2]:
l = 5 * x ** 3 + 3 * x - 2 * x ** 2 - 4
r = 3 * x ** 3 - 3 * x ** 2 + 5
l + r
Out[2]:
答え: $8x^3-5x^2+3x+1$
In [3]:
sympy.expand((x-2*y+1)*(x-2*y-2))
Out[3]:
答え: $x^2-4xy-x+4y^2+2y-2$
In [4]:
a, b, c = sympy.symbols('a b c')
sympy.expand((a+b+c)**2)
Out[4]:
答え: $a^2+b^2+c^2+2ab+2bc+2ca$
In [5]:
sympy.factor(x**2+8*x+15)
Out[5]:
答え: $(x+3)(x+5)$
In [6]:
from sympy.solvers.inequalities import reduce_rational_inequalities
reduce_rational_inequalities([[4 * x + 5 > 2 * x -3]], x)
Out[6]:
答え: $x > -4$
In [7]:
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np
x = np.arange(-1.8, 4 , 0.2)
y = 2 * x ** 2 - 4 * x - 1
plt.style.use('ggplot')
plt.plot(x,y)
plt.axhline(y=0, color='gray')
plt.axvline(x=0, color='gray')
plt.xlabel("x")
plt.ylabel("y")
plt.show()
(SymPyは出てきませんでした..)
In [45]:
import sympy
from sympy.solvers import solve
x = sympy.symbols('x')
expr = x**2 - x - 20
solve(expr, x)
Out[45]:
答え: $x = -4, 5$
In [43]:
expr = x**2 - 12 * x + 36
solve(expr, x)
Out[43]:
答え: $x = 6$