sympyで文字列を直接数式として扱いたい(sympifyを使う)

過去にPythonで数式を扱い、微積などを扱う方法を書きました。

esu-ko.hatenablog.com

このとき、数式の変数はsymbolsSymbolで一度定義し、
その変数に直接計算式を追加しているのですが、これは大変。

特に、アプリケーションに組み込んだり、可変にしたい場合はこのままでは扱えません。

そんな時に使えるのがsympify関数です。

コード

#pprintは数式をきれいに出力してくれる
#factorは因数分解してくれる
#diffは微分してくれる

from sympy import sympify,pprint,factor,diff


expr = sympify('x**2 +2*x +1')

pprint(expr)
#因数分解
pprint(factor(expr))

#微分
pprint(diff(expr,'x'))

これで文字列として数式を渡して扱えるようになりました。