我试图使用sympy.fraction方法提取表达式的分子和分母。 代码如下 -
from sympy import *
x=symbols('x')
a=1/(1+1/x)
print(fraction(a))
我想要的输出是
(X,X + 1)
但正在输出
(1,1 + 1 / x)
答案 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
具有相同的效果,但它是一种较重的工具,可以尝试各种各样的简化技术。 together
,cancel
,factor
等特定功能的输出更具可预测性。
答案 2 :(得分:0)
as_numer_denom
方法将递归地找到理性表达式的分子和分母:
>>> a.as_numer_denom()
(x, x + 1)
函数fraction
,numer
和denom
只是为您提供表达式的字面分子和分母而不进行解除嵌套。