Sympy Symphy不计算sin(-x)或sin(pi)的Latex2Symphy转换

Sympy Symphy不计算sin(-x)或sin(pi)的Latex2Symphy转换,sympy,symbolic-math,Sympy,Symbolic Math,我已经使用Latex2Symphy成功地处理了各种LaTeX输入,但在一些函数中遇到了问题。例如: from latex2sympy.process_latex import process_sympy from sympy import * inputLatex = '\\sin{-x}\\sin{-x}' trigsimp(process_sympy(inputLatex)) 单(x)**2 这非常有效:trigsimp很好地处理了简化。现在,如果我尝试: inputLatex = '\

我已经使用Latex2Symphy成功地处理了各种LaTeX输入,但在一些函数中遇到了问题。例如:

from latex2sympy.process_latex import process_sympy
from sympy import *

inputLatex = '\\sin{-x}\\sin{-x}'
trigsimp(process_sympy(inputLatex))
单(x)**2

这非常有效:trigsimp很好地处理了简化。现在,如果我尝试:

inputLatex = '\\sin{-x}'
trigsimp(process_sympy(inputLatex))
sin(-x)

尽管这显然是正确的,但我希望trigsimp()会给出-sin(x)作为答案。事实上,如果我直接从一个symphy表达式运行trigsimp:

trigsimp(sin(-x))
inputLatex = '\\sin{-x}'
expr = process_sympy(inputLatex)
trigsimp(expr.doit())
-sin(x)

这就是我所期望的。即使在不使用trigsimp()命令的情况下运行sin(-x),也会返回me-sin(x)。我检查了进程_sympy('\\sin{-x}')调用的对象类型,它是'sin'

我认为这可能与x转换为符号类型的方式有关,但我尝试将pi放入sin函数中

inputLatex = '\\sin{\\pi}'
trigsimp(process_sympy(inputLatex))
sin(pi)

如果我直接运行sin(pi),无论是否使用trigsimp(),我都会得到0作为答案


你们有谁能解释一下吗?

我还没有解开整个谜团,但我发现了一个肮脏的解决办法,那就是使用sympify()。因此,如果其他人也面临同样的问题,以下是我为使其发挥作用所做的:

inputLatex = '\\sin{-x}'
sympify(str(process_sympy(inputLatex)))
现在的答案是-sin(x),我想要的


至于sin(pi)这件事,问题是进程_sympy()无法区分作为符号的pi和作为数字的pi。我在这里做了测试,type(process_sympy('\pi'))返回符号类型,而不是数字。同样的解决方案也适用于这里。

虽然可能已经太晚了,但是您可以通过调用
sympy
表达式中的
doit()
方法来解决这个问题,该表达式是从
process\u sympy(inputLatex)
获得的

当调用
进程\u sympy
时,它会生成一个而不是一个字符串。此表达式不能仅通过调用
sympify
进行求值,因为它有一个属性告诉您不要求值

您通过将该表达式转换为字符串并对其进行符号化来解决问题,但更直接的方法是在表达式中使用
doit()
方法:

trigsimp(sin(-x))
inputLatex = '\\sin{-x}'
expr = process_sympy(inputLatex)
trigsimp(expr.doit())

你愿意做这项工作。

你有没有试过不让罪恶成为后盾?我有一种感觉,\\sin并没有被认为是正弦函数,而是一种新的符号sin。您可以通过运行例如test=sympy.symbols('sin')来复制此行为;试验(3);测试(-3);我使用type()检查了对象。Latex2Symphy正确地处理它,将LaTeX转换为Symphy格式,并正确识别正弦函数(键入“sin”)。它只是没有评估这一点。至于反斜杠,我需要它们,因为它是一种乳胶格式。我还尝试过其他简化函数,如fu()、exptrigsimp(),同样的问题也会发生。您好,我无法运行上述代码,您能否指导您使用的python版本以及如何设置latex2sympy