如何集成 sympy 表达式和 Latex 格式

Ste*_*rnt 3 python sympy

您好,提前感谢您的帮助。我正在尝试将数学格式与 sympy 表达式混合在一起。我正在使用 jupyter 笔记本。

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

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) )
Run Code Online (Sandbox Code Playgroud)

jda*_*amp 5

当您使用字符串格式化时,strsympy 实现的方法用于将表达式转换为字符串。但是, 的输出str不适用于 LaTeX 输出,请参阅str 的文档

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

所以输出是有效的 python 代码:

>> str(expr)
'sqrt(3)*x**3'
Run Code Online (Sandbox Code Playgroud)

为了获得 LaTeX 格式的表达式,sympy 提供了latex函数。可以按如下方式调用它:

>> sym.latex(expr)
'\\sqrt{3} x^{3}'
Run Code Online (Sandbox Code Playgroud)

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

display(Math('\\frac{1}{2} %s' %sym.latex(expr)))
Run Code Online (Sandbox Code Playgroud)

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