📐
Jupyter Notebook で python側の変数 と LaTeX を組み合わせて表示したい。
やりたいこと
SymPyの計算結果を良い感じに
例
SymPyで対角行列を計算して、その結果を
方法
display.Math と 書式化演算子 を使う
コード
import sympy as sp
from IPython.display import display, Math
result = sp.Matrix([
[2, 0],
[0, -3]
])
display(Math(r"P^{-1}AP = %s" % sp.latex(result)))
出力結果:
display.Math と フォーマット文字列 を使う
コード
import sympy as sp
from IPython.display import display, Math
result = sp.Matrix([
[2, 0],
[0, -3]
])
display(Math(rf"P^{{-1}}AP = {sp.latex(result)}"))
出力結果:
display.Markdown を使う
これはmarkdown形式で結果を出力できるので、複数行に渡って結果を出力したい場合になどに便利そう。
コード
import sympy as sp
from IPython.display import display, Markdown
result = sp.Matrix([
[2, 0],
[0, -3]
])
display(Markdown(rf"$P^{{-1}}AP = {sp.latex(result)}$"))
出力結果:
より複雑なコード
コード
import sympy as sp
from IPython.display import Markdown
A = sp.Matrix([
[1, 2],
[2, -2]
])
P = sp.Matrix([
[2, 1],
[1, -2]
])
display(Markdown(rf"""
行列$A = {sp.latex(A)}$の対角行列を求める。
固有値は、$\lambda_1 = 2, \lambda_2 = -3$であり、対応する固有ベクトルはそれぞれ、
$$
\boldsymbol{{x}}_1 = {sp.latex(P[:, 0])}, \boldsymbol{{x}}_2 = {sp.latex(P[:, 1])}
$$
したがって、$\boldsymbol{{P}}=[\boldsymbol{{x}}_1, \boldsymbol{{x}}_2]$と置くと、
$$
\begin{{aligned}}
\boldsymbol{{P}} &= {sp.latex(P)} \\
P^{{-1}}AP &= {sp.latex(P.inv() * A * P)}
\end{{aligned}}
$$
"""))
出力結果:
行列
固有値は、
したがって、
display.Latex を使う。
これはそのままLaTeX形式で出力できる。Markdownと同じく複数行にまたがる場合や、LaTeXに書きなれてる方はこれが便利かもしれない。
コード
import sympy as sp
from IPython.display import display, Latex
result = sp.Matrix([
[2, 0],
[0, -3]
])
display(Latex(rf"""
\begin{{align}}
P^{{-1}}AP &= {sp.latex(result)}
\end{{align}}
"""))
出力結果:
参考文献
Discussion