如何使用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

最新更新