如何整合sympy表达式和乳胶格式

时间:2019-06-19 07:35:10

标签: python sympy

您好,谢谢您的帮助。我正在尝试将漂亮的数学格式与sympy表达式混合在一起。我正在使用jupyter-notebook。

我可以在单独的行上得到乳胶和漂亮的sympy印刷,但是似乎找不到一种将它们组合成一行的方法。下面的代码显示三行;第三行应该是前两者的组合。希望有一个我还没有想到的优雅解决方案(Python noob的一部分)。

import sympy as sym
from IPython.display import display, Math
sym.init_printing()

x = sym.symbols('x')

expr = sym.sqrt(3) * x**3
display(Math('\\frac{1}{2} ') )
display(expr)
display(Math('\\frac{1}{2} %s' %expr) )

1 个答案:

答案 0 :(得分:0)

使用字符串格式时,由sympy实现的str方法用于将表达式转换为字符串。 但是,str的输出不适用于LaTeX输出,请参见documentation of str

  

要获取表达式的字符串形式,请使用str(expr)。这也是print(expr)生成的形式。字符串形式被设计为易于阅读,但采用正确的Python语法形式,以便可以复制和粘贴。表达式的str()形式通常看起来与您输入表达式时完全相同。

因此输出应为有效的python代码:

>> str(expr)
'sqrt(3)*x**3'

要获取LaTeX格式的表达式,sympy禁止使用latex function。 可以按如下方式调用它:

>> sym.latex(expr)
'\\sqrt{3} x^{3}'

因此,只需将最后一行更改为

display(Math('\\frac{1}{2} %s' %sym.latex(expr)))

它应该看起来像预期的那样。