python - 使用 sympy 分解出特定数字

标签 python sympy

我有一个表达式如下:

from sympy import *
x = symbols('x')
ex = 2+2*x

我想从表达式中分解出 -2。我尝试使用 .factor() 方法进行因子分解,这就是我得到的结果:

ex.factor()
>>> 2*(x + 1)

如何明确设置我想在 sympy 中使用的因子?

最佳答案

下面介绍了如何用任意数字对表达式进行因式分解。它可以是 python int 或 Sympy 数字。假设我们想将 2 + 2*x 分解为 3/7:

def factor_by_num(expr,num):

    if not expr.is_Add:
        return None

    if isinstance(num,int):
        num_int = Integer(num)     
        divisor = Rational(1,num)

    elif hasattr(num,'is_Number'):
        num_int = num
        divisor= Rational(1,num)

    else:
        return None

    factored_args = map(lambda x: Mul(divisor,x),expr.args)
    return Mul(num_int,Add(*factored_args),evaluate=False)

x=Symbol('x')
ex = 2+2*x
ex_f = factor_by_num(ex,Rational(3,7))

这应该可以解决问题

关于python - 使用 sympy 分解出特定数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53847341/

相关文章:

Python numpy 无法从模块导入?

python - 在派生类中调用 super() 时,可以传入 self.__class__ 吗?

python - Sympy 在求解方程时返回 ConditionSet 对象,而 matlab 在求解相同方程时返回单个 float

python - 从二进制文件中解压 double 值

python - 如何在列表中找到第二小的 UNIQUE 数字?

python - 是否可以从具有相同名称的查询字符串中获取值?

python - 如何使用 SymPy 加速符号集成?

python - 调用 qr_solve 时无法从复数创建 mpf

python - 在 SymPy 中解析包含用户定义函数的符号表达式

sympy - Spyder SymPy 不会打印符号数学