Tom
Tom

Reputation: 934

How to extract numerator and denominator from polynomial without evaluating?

I have the following expression

A=Symbol('A')
x=Symbol('x')
B=Symbol('B')
C=Symbol('C')
D=Symbol('D')
expression=((A**x-B-C)/(D-1))*(D-1)
n,d=fraction(expression)

I am getting following result:

n=A**x-B-C
d=1

My expected result is

n=(A**x-B-C)*(D-1)
d=(D-1)

Is there way in sympy or need to write customize function to handle that

Upvotes: 11

Views: 14869

Answers (1)

cameronroytaylor
cameronroytaylor

Reputation: 1659

Use UnevaluatedExpr() to prevent the expression from being evaluated.

from sympy import symbols, fraction, UnevaluatedExpr

A,x,B,C,D = symbols('A x B C D')

expression = (A**x-B-C)/(D-1)*UnevaluatedExpr(D-1)
n,d = fraction(expression)
print(n)
print(d)

This returns

(A**x - B - C)*(D - 1)
D - 1

See the Sympy Advanced Expression Manipulation doc page for more details.

Upvotes: 9

Related Questions