我想知道如何让 Sympy 将带分数的方程扩展为多项式。例如,考虑以下代码
from sympy import *
var('x a b c d e')
Eq(a, ()/())
frac = Eq(a, (x + b/x)/(c/x + d/x**2))
pprint(frac)
如何得到 x 的多项式?例如,在这种情况下,多项式看起来像
C1*x**3 + C2*x**2 + C3*x + C4 = 0
我有 .as_poly()
、as_powers_dict()
、expand()
和其他一些,但我几乎是在猜测名称并尝试一切似乎遥不可及的事情。有办法吗?
干杯
最佳答案
我不知道这种方法的通用性如何,但在某些情况下这样的方法可能会有用:
In [299]: frac = Eq(a, (x + b/x)/(c/x + d/x**2))
In [300]: f = factor(frac.lhs - frac.rhs)
In [301]: f
Out[301]: -(-a*c*x - a*d + b*x + x**3)/(c*x + d)
In [302]: f *= denom(f)
In [303]: poly(f, x)
Out[303]: Poly(-x**3 + (a*c - b)*x + a*d, x, domain='ZZ[a,b,c,d]')
In [304]: poly(f, x).as_dict()
Out[304]: {(0,): a*d, (1,): a*c - b, (3,): -1}
关于python - 获取 Sympy 将分数展开为多项式方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42179995/