使用sympy提取嵌套分数的分子和分母

时间:2018-04-04 19:13:24

标签: python sympy

我试图使用sympy.fraction方法提取表达式的分子和分母。 代码如下 -

from sympy import *
x=symbols('x')
a=1/(1+1/x)
print(fraction(a))

我想要的输出是

  

(X,X + 1)

但正在输出

  

(1,1 + 1 / x)

3 个答案:

答案 0 :(得分:2)

首先要求简化表达式:

>>> from sympy import *
>>> var('x')
x
>>> a = 1/(1+1/x)
>>> a.simplify()
x/(x + 1)
>>> fraction(a.simplify())
(x, x + 1)

答案 1 :(得分:2)

fraction的文档字符串说:

  

此函数不会尝试简化嵌套   分数或完成任何术语重写。

您需要的重写由together完成。

print(fraction(together(a)))   #  (x, x + 1)

simplify具有相同的效果,但它是一种较重的工具,可以尝试各种各样的简化技术。 togethercancelfactor等特定功能的输出更具可预测性。

答案 2 :(得分:0)

as_numer_denom方法将递归地找到理性表达式的分子和分母:

>>> a.as_numer_denom()
(x, x + 1)

函数fractionnumerdenom只是为您提供表达式的字面分子和分母而不进行解除嵌套。