sympy - 如何在不计算的情况下从多项式中提取分子和分母?

标签 sympy

我有以下表达式

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)

我得到以下结果:
n=A**x-B-C
d=1

我的预期结果是
n=(A**x-B-C)*(D-1)
d=(D-1)

有没有办法在 sympy 或需要编写自定义函数来处理

最佳答案

使用 UnevaluatedExpr()以防止表达式被评估。

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)

这返回
(A**x - B - C)*(D - 1)
D - 1

见同情 Advanced Expression Manipulation文档页面了解更多详情。

关于sympy - 如何在不计算的情况下从多项式中提取分子和分母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39130964/

相关文章:

python - 如何使用 scipy/numpy 或 sympy 执行非线性优化?

python - 如何根据符号查找符号矩阵中元素的索引?

同情 : order of solutions from solve

python - 傅立叶变换 Sympy 什么都不做?

python - Sympy,如何在给定范围内求解具有 2 个未知数的方程

python - sympy 矩阵真的那么慢吗?

python - 在 sympy.stats 中绘制混合分布

python - Python 中的 Sympy 因式分解

python - 在 SymPy 中使用 Lambdify 消除公共(public)子表达式的最佳实践

probability - 定义取决于单个条件的两个随机变量