Вычеркните конкретное число, используя sympy - PullRequest
0 голосов
/ 19 декабря 2018

У меня есть следующее выражение:

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

Я бы хотел выделить -2 из выражения.Я попытался использовать фактор .factor(), и вот что я получил:

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

Как я могу явно установить коэффициент, который я хотел бы использовать в sympy?Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Вот как вы можете разложить выражение на произвольное число.Это может быть int Python или число 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))

Это должно сработать

0 голосов
/ 21 декабря 2018

Я не знаю, как это сделать.Если вы хотите переписать выражение, умножив оба аргумента на -1, попробуйте a,b=factor(eq).args; Mul(-a, -b, evaluate=False).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...