2017-02-11 71 views
1

我想知道如何讓Sympy將分數方程展開爲多項式。例如,請考慮以下代碼Get 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

我不知道這種做法會如何一般可以,但是這樣的事情可能會在某些情況下是有用的:

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}