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