如何使用 sympy 简化表达式?

How to simplify the expression using sympy?

这个表达式怎么可以

4x^3 + 16x^2 + 24x + 8 = 4y^2 + 2y + 8

缩减为

2x^3 + 8x^2 + 12x + 4 = 2y^2 + y + 4

使用 sympy?

表达式以字符串形式给出:

input_string = "45x^3 + 39x^2 + 24x + 9 = 4y^2 + 2y + 8" 

第一步是将字符串解析为 SymPy 表达式:

In [51]: from sympy import parse_expr

In [52]: input_string = "4x^3 + 16x^2 + 24x + 8 = 4y^2 + 2y + 8"

In [53]: eq = parse_expr(input_string, transformations="all")

In [54]: eq
Out[54]: 
   3       2                 2          
4⋅x  + 16⋅x  + 24⋅x + 8 = 4⋅y  + 2⋅y + 8

现在我假设你想要的只是将两边除以它们系数的 gcd 所以得到所有系数并计算它们的 gcd:

In [55]: coeffs = Poly(eq.lhs).coeffs() + Poly(eq.rhs).coeffs()

In [56]: coeffs
Out[56]: [4, 16, 24, 8, 4, 2, 8]

In [57]: g = gcd(coeffs)

In [58]: g
Out[58]: 2

In [59]: neweq = Eq(eq.lhs/g, eq.rhs/g)

In [60]: neweq
Out[60]: 
   3      2                 2        
2⋅x  + 8⋅x  + 12⋅x + 4 = 2⋅y  + y + 4