让Sympy将一个分数扩展为多项式方程

时间:2017-02-11 19:01:14

标签: python sympy

我想知道如何让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()以及其他一些人,但我几乎猜到了这个名字,并尝试了一切似乎遥不可及的事情。有没有办法做到这一点?

干杯

1 个答案:

答案 0 :(得分:2)

我不知道这种方法有多普遍,但在某些情况下这样的事情可能会有用:

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}