如何使用 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
这个表达式怎么可以
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