2017-02-11 3 views
1

Ich frage mich, wie man Sympy erhält, um Gleichungen mit Bruch in Polynome zu erweitern. Betrachten Sie beispielsweise den folgenden CodeGet Sympy, um einen Bruch in eine Polynomgleichung zu erweitern

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) 

Wie kann ich ein Polynom in x erhalten? In diesem Fall würde beispielsweise das Polynom in etwa so aussehen

C1*x**3 + C2*x**2 + C3*x + C4 = 0 

Ich habe .as_poly(), as_powers_dict(), expand() und einige andere, aber ich vermute, ziemlich durch den Namen und versuchen, alles, was der Ferne möglich erscheint. Gibt es eine Möglichkeit, das zu tun?

Prost

Antwort

1

Ich weiß nicht, wie allgemein dieser Ansatz sein wird, aber so etwas wie dies könnte in manchen Fällen nützlich sein:

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} 
Verwandte Themen