在Sympy中获取不带元数据的多项式表达式



使用

from sympy import *
f = Poly(x**2 + 2*x - 1, x)

我们可以得到f作为一个多项式,但是如何得到这个多项式作为一个乳胶表达式呢?

latex(f)

产生

operatorname{Poly}{left( x^{2} + 2 x - 1, x, domain=mathbb{Z} right)}

当我只需要

x^{2} + 2 x - 1

我需要使用Poly,因为我正在使用的表达式有几个变量,我需要它是x的降序。

只需将其转换为常规Expr:

from sympy import *
x = symbols("x")
f = Poly(x**2 + 2*x - 1, x)
print(latex(f.as_expr()))

至少对我有用。

这是一个恶心的破解,但我想出了

def poly2latex(p):
s = str(p).split(',')[0].replace('Poly(', '').replace('**','^').replace('*','')
return s

我只是在文档中找不到任何东西可以在不打乱术语顺序的情况下将poly重新作为表达式。所以,除非有人知道更好的方法,否则现在就必须这样做!

最新更新