我一直在使用Latex2SymPy成功处理各种LaTeX输入,但是我遇到了一些功能问题。例如:
from latex2sympy.process_latex import process_sympy
from sympy import *
inputLatex = '\\sin{-x}\\sin{-x}'
trigsimp(process_sympy(inputLatex))
的sin(x)** 2
效果很好:trigsimp很好地处理了简化。现在,如果我尝试:
inputLatex = '\\sin{-x}'
trigsimp(process_sympy(inputLatex))
SIN(-x)
即使这显然是正确的,我希望trigsimp()给我-sin(x)作为答案。事实上,如果我直接从一个表达式表达式运行trigsimp:
trigsimp(sin(-x))
-sin(x)
这就是我的期望。即使在没有trigsimp()命令的情况下运行sin(-x)也会返回-sin(x)。我检查了我的process_sympy(' \\ sin {-x}')电话的对象类型,它是“罪恶”。
我认为这可能与x转换为Symbol类型的方式有关,但我尝试将pi放入sin函数中。
inputLatex = '\\sin{\\pi}'
trigsimp(process_sympy(inputLatex))
罪(PI)
如果我直接犯罪(pi),我得到0作为答案,有或没有trigsimp()。
你们中的任何人都可以对此有所了解吗?
答案 0 :(得分:1)
尽管可能为时已晚,但您可以通过在从B
获得的doit()
表达式中调用sympy
方法来解决该问题。
调用process_sympy(inputLatex)
时,它会生成unevaluated sympy expression,而不是字符串。该表达式不能仅通过调用process_sympy
来求值,因为它具有告诉您不要求值的属性。
您可以通过将表达式转换为字符串然后再进行表示来解决该问题,但是更直接的方法是通过在表达式中使用sympify
方法:
doit()
会做这份工作。
答案 1 :(得分:0)
我还没有解决整个谜团,但我找到了一个肮脏的解决方法,即使用sympify()。因此,如果其他任何人面临同样的问题,我将采取以下措施来实现这一目标:
inputLatex = '\\sin{-x}'
sympify(str(process_sympy(inputLatex)))
答案现在是-sin(x),我想要的。
对于sin(pi)事物,问题是process_sympy()不能将pi作为符号与pi区分为数字。我在这里做了测试,并且输入(process_sympy(' \ pi'))返回符号类型,而不是数字。同样的解决方案适用于此。