2017-02-11 10 views
1

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

私は、このアプローチがものになるかどうか一般わからないが、このようなものはいくつかのケースで役に立つかもしれない:

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}