[SymPy] LaTeX による数式表示

[SymPy] LaTeX による数式表示

sympy.init_printing()

 Jupyter Notebook には MathJax という Javascriptライブラリが組込まれていて、sympy.init_printing() を使うと、LaTeX形式で数式を出力させることができます。

display()関数

 Jupyter Notebook でコードセルを実行すると、最後に記述した命令文が Out[] に出力されます。たとえば次のコードを実行すると、最後に記述した sympy.sin(x) という命令文の実行結果が出力されることになります。

import sympy

# LaTeXで数式を表示
sympy.init_printing()

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

sympy.log(x)
sympy.sin(x)
\[\sin(x)\]

 途中にある数式を LaTeX形式で表示させたい場合は display()関数を使います。

import sympy

# LaTeXで数式を表示
sympy.init_printing()

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

f = sympy.log(x)
g = sympy.sin(x)

display(f)
display(g)
\[\begin{align*}
\log(x)\\[6pt]
\sin(x)\end{align*}\]

 display() 関数は IPython.core.display モジュールの関数ですが、Jupyter Notebook を起動すると自動的にインポートされるので、display() と記述するだけて使えるようになっています。
 

カラー図解 最新 Raspberry Piで学ぶ電子工作 作って動かしてしくみがわかる (ブルーバックス)

新品価格
¥1,296から
(2019/8/21 23:40時点)

sympy.latex()関数

 sympy.latex() を使うと数式を LaTeXコマンドで表示させることができます。LaTeX コマンドを手入力するのは相当な手間がかかるので、この機能は論文の執筆などに有用です。

import sympy

# LaTeXで数式を表示
sympy.init_printing()

# 記号xを定義
sympy.var("a b x y")

# f(x)=exp(x)*cos(x)
f = sympy.exp(x) * sympy.cos(x)

# f(x)をaからbまでxで積分する
i = sympy.integrate(f, (x, a, b))

# 数式をまとめる(整理する)
i = sympy.simplify(i)

# 数式をLaTeXで表示
display(i)

# 数式のLaTeXコマンドを表示
print(sympy.latex(i))
\[\frac{\sqrt{2}}{2} \left(- e^{a} \sin{\left (a + \frac{\pi}{4} \right )} + e^{b} \sin{\left (b + \frac{\pi}{4} \right )}\right)\]
\frac{\sqrt{2}}{2} \left(- e^{a} \sin{\left (a + \frac{\pi}{4} \right )} + e^{b} \sin{\left (b + \frac{\pi}{4} \right )}\right)

 SymPy で積分などを計算させると、式がきれいにまとまっていないことがあるので、sympy.simplify() で数式を整理しておきます。三角関数の合成なども勝手にやってくれます。