将LaTex公式转换为可在SymPy中使用的类型

22

我想解析LaTeX公式并将其直接用作SymPy表达式。换句话说,我需要类似于sympify的东西:

from sympy import sympify
f = sympify('x^2 + sin(y) + 1/2')
print f

但可以将LaTeX表达式(字符串)作为输入,例如:

f = latex_sympify('\frac{x}{1+x}')

假如有任何东西可以将LaTeX转换为正则数学表达式,那么 sympify 就可以将其转化为 SymPy 对象。但我倾向于在 Python 中完成所有操作。

非常感谢您提供的任何建议。


我猜这样的东西不存在... 不管怎样,LaTeX有大量公式特性,那么至少应该包括哪一个?你需要处理数组/矩阵/二项式等吗? - Bakuriu
目前还没有SymPy函数可以实现这个功能。请参见https://code.google.com/p/sympy/issues/detail?id=2319。您可能能够找到一个次要的解析器,可以将LaTeX转换为类似Python的语言,然后SymPy可以解析它。 - asmeurer
也欢迎补丁 :) - asmeurer
感谢您的评论和指向SymPy问题跟踪器的指针(很抱歉我没有自己找到)。关于应该包括什么,我与asmeurer在跟踪器中发表的评论持相同意见--一些功能总比没有好,因此也许从简单的表达式开始并逐步扩展会更明智。 - user2243748
你能找到任何解决方案吗? - gsagrawal
Mathematica确实具有一些这方面的功能,但我们目前正在努力在Python中实现类似的功能。如果我们有可用的新信息,我们会添加进来。 - user2243748
3个回答

10

3
你可以使用latex2sympy2
from latex2sympy2 import latex2sympy
f = r"\frac{x}{1+x}"
latex2sympy(f)

3
我会查看转换LaTex到MathML的工具,例如(通过谷歌搜索):http://www.mathtowebonline.com/。然后您可以处理此工具输出的XML。但是,您应该小心地将结果解释为数学表达式。这样的工具可能保证文本表示相同,但是操作数与其运算符之间的括号(分组)可能不是您所期望的。通常,您将看到较少的嵌套。我们按照惯例解释为嵌套的仅相邻的运算符将被简单地转换为XML格式中的兄弟元素。如果您尝试将其解释为公式,则还有一些工作要做(以正确的方式恢复嵌套结构)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接