Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to extract numerator and denominator from polynomial without evaluating?

Tags:

sympy

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

like image 207
Tom Avatar asked Aug 24 '16 18:08

Tom


1 Answers

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.

like image 110
cameronroytaylor Avatar answered Oct 03 '22 22:10

cameronroytaylor