使用 sympy 在 ipython 笔记本中显示格式化的未评估 = 已评估
Show formatted unevaluated = evaluated in ipython notebook with sympy
我想在 ipython 笔记本上做笔记。有没有办法让它发挥作用,让您可以像教科书一样编写数学?
from sympy import init_session
init_session()
expr = Integral(x,x)
print(latex(expr),'=',latex(expr.doit()))
给出一个结果
\int x\, dx = \frac{x^{2}}{2}
但我想在笔记本上看到
如果我将每个部分写在单独的单元格中,它工作正常,但输出超过几行。我在 Windows XP 上使用 Anaconda,所以它只是 mathjax 进行渲染。
我想要一个执行此操作的函数,甚至可能像 Maple 一样添加 eqn 编号。
编辑:我刚刚发现 HTML,这种格式在笔记本中很好。
from IPython.display import HTML
expr = Integral(x,x)
s = latex(expr) + ' = ' + latex(expr.doit())
HTML('$(1)~~'+ s + '$' + '\n' + '$$(2)~~'+ s + '$$')
我想现在我需要知道进行自动编号的最佳方法
也许这就是您要找的:
In [15]: expr = Integral(x,x)
In [16]: Eq(expr, expr.doit())
Out[16]:
2
⌠ x
⎮ x dx = ──
⌡ 2
所以我这样开始我的笔记本。
from sympy import init_session
init_session()
from IPython.display import HTML
eqn = 0
eqns = [0] * 100 # max num of eqns
import pandas as pd, numpy as np, matplotlib.pyplot as plt, math
%matplotlib inline
def outs(expr, *args):
global eqn, eqns
eqn +=1
eqns[eqn] = expr
s = latex(expr)+'='+latex(expr.doit())
for count, thing in enumerate(args):
s += '~' + latex(thing)
display(HTML('$$('+str(eqn)+')~~' + s +'$$'))
那我就可以了
eqn = 0
outs(Integral(x,x))
outs(Integral(x**2, x))
outs(eqns[1] + eqns[2], ', @x = 2 \Rightarrow ', (eqns[1]+eqns[2]).doit().subs(x,2))
然后我得到
这不是一个非常优雅的编号方案,但只需执行 eqn = 0
即可轻松重置
我想在 ipython 笔记本上做笔记。有没有办法让它发挥作用,让您可以像教科书一样编写数学?
from sympy import init_session
init_session()
expr = Integral(x,x)
print(latex(expr),'=',latex(expr.doit()))
给出一个结果
\int x\, dx = \frac{x^{2}}{2}
但我想在笔记本上看到
如果我将每个部分写在单独的单元格中,它工作正常,但输出超过几行。我在 Windows XP 上使用 Anaconda,所以它只是 mathjax 进行渲染。
我想要一个执行此操作的函数,甚至可能像 Maple 一样添加 eqn 编号。
编辑:我刚刚发现 HTML,这种格式在笔记本中很好。
from IPython.display import HTML
expr = Integral(x,x)
s = latex(expr) + ' = ' + latex(expr.doit())
HTML('$(1)~~'+ s + '$' + '\n' + '$$(2)~~'+ s + '$$')
我想现在我需要知道进行自动编号的最佳方法
也许这就是您要找的:
In [15]: expr = Integral(x,x)
In [16]: Eq(expr, expr.doit())
Out[16]:
2
⌠ x
⎮ x dx = ──
⌡ 2
所以我这样开始我的笔记本。
from sympy import init_session
init_session()
from IPython.display import HTML
eqn = 0
eqns = [0] * 100 # max num of eqns
import pandas as pd, numpy as np, matplotlib.pyplot as plt, math
%matplotlib inline
def outs(expr, *args):
global eqn, eqns
eqn +=1
eqns[eqn] = expr
s = latex(expr)+'='+latex(expr.doit())
for count, thing in enumerate(args):
s += '~' + latex(thing)
display(HTML('$$('+str(eqn)+')~~' + s +'$$'))
那我就可以了
eqn = 0
outs(Integral(x,x))
outs(Integral(x**2, x))
outs(eqns[1] + eqns[2], ', @x = 2 \Rightarrow ', (eqns[1]+eqns[2]).doit().subs(x,2))
然后我得到
这不是一个非常优雅的编号方案,但只需执行 eqn = 0