Я думаю, что вы должны использовать str()
для этого.В вашем случае
str(collect(test, Rational(1, 2)))
дает вывод
'a/2 + b/2 + c'
Для упомянутого вами выражения я бы использовал
str(Add(Mul(Integer(-1), Add(Mul(Rational(1, 2), Symbol('f_2')), Mul(Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_5'), Add(Mul(Integer(-1), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_6'), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_7'), Add(Mul(Integer(-1), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_8'), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1)))))))), Add(Mul(Rational(1, 2), Symbol('p_2')), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_6'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_8'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('a_2'), Integer(-1)), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_2'), Add(Mul(Symbol('a_1'), Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('a_2'), Integer(-1)), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_4'), Add(Mul(Symbol('a_1'), Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))))), Mul(Pow(Symbol('wBar'), Integer(-1)), Symbol('x_5'), Symbol('x_6'), Symbol('z_1'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2'))), Mul(Pow(Symbol('wBar'), Integer(-1)), Pow(Symbol('x_6'), Integer(2)), Symbol('z_1'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2'))), Mul(Pow(Symbol('wBar'), Integer(-1)), Symbol('x_6'), Symbol('x_8'), Symbol('z_1'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')))))
Это дает мне вывод как
'-(f_2/2 + (a_2*(-f_2 + 1) + f_2)*(x_5*(-t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*wBar) + x_6*(-o*t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*wBar) + x_7*(-t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*wBar) + x_8*(-o*t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*wBar)))*(p_2/2 + x_6*(a_2*(-f_2 + 1) + f_2)*(-o*t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*wBar) + x_8*(a_2*(-f_2 + 1) + f_2)*(-o*t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*wBar) + x_2*(a_1*a_2*(-f_2 + 1) + f_2)*(-o*t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*a_2*wBar) + x_4*(a_1*a_2*(-f_2 + 1) + f_2)*(-o*t_2*z_2*(s - 1) + z_1*(-t_2 + 1))/(2*a_2*wBar)) + x_5*x_6*z_1*(a_2*(-f_2 + 1) + f_2)/wBar + x_6**2*z_1*(a_2*(-f_2 + 1) + f_2)/wBar + x_6*x_8*z_1*(a_2*(-f_2 + 1) + f_2)/wBar'
Чтобы получить упрощенный результат, я использовал simplify() as well
.
str(simplify(Add(Mul(Integer(-1), Add(Mul(Rational(1, 2), Symbol('f_2')), Mul(Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_5'), Add(Mul(Integer(-1), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_6'), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_7'), Add(Mul(Integer(-1), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_8'), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1)))))))), Add(Mul(Rational(1, 2), Symbol('p_2')), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_6'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_8'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('a_2'), Integer(-1)), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_2'), Add(Mul(Symbol('a_1'), Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))), Mul(Rational(1, 2), Pow(Symbol('a_2'), Integer(-1)), Pow(Symbol('wBar'), Integer(-1)), Symbol('x_4'), Add(Mul(Symbol('a_1'), Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2')), Add(Mul(Integer(-1), Symbol('o'), Symbol('t_2'), Symbol('z_2'), Add(Symbol('s'), Integer(-1))), Mul(Symbol('z_1'), Add(Mul(Integer(-1), Symbol('t_2')), Integer(1))))))), Mul(Pow(Symbol('wBar'), Integer(-1)), Symbol('x_5'), Symbol('x_6'), Symbol('z_1'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2'))), Mul(Pow(Symbol('wBar'), Integer(-1)), Pow(Symbol('x_6'), Integer(2)), Symbol('z_1'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2'))), Mul(Pow(Symbol('wBar'), Integer(-1)), Symbol('x_6'), Symbol('x_8'), Symbol('z_1'), Add(Mul(Symbol('a_2'), Add(Mul(Integer(-1), Symbol('f_2')), Integer(1))), Symbol('f_2'))))))
, который дал мне
'-(a_2*wBar*x_6*z_1*(a_2*(f_2 - 1) - f_2)*(x_5 + x_6 + x_8) + (f_2*wBar + (a_2*(f_2 - 1) - f_2)*(x_5*(t_2*z_2*(s - 1) + z_1*(t_2 - 1)) + x_6*(o*t_2*z_2*(s - 1) + z_1*(t_2 - 1)) + x_7*(t_2*z_2*(s - 1) + z_1*(t_2 - 1)) + x_8*(o*t_2*z_2*(s - 1) + z_1*(t_2 - 1))))*(a_2*p_2*wBar + a_2*(x_6 + x_8)*(a_2*(f_2 - 1) - f_2)*(o*t_2*z_2*(s - 1) + z_1*(t_2 - 1)) + (x_2 + x_4)*(a_1*a_2*(f_2 - 1) - f_2)*(o*t_2*z_2*(s - 1) + z_1*(t_2 - 1)))/4)/(a_2*wBar**2)'
Это ожидаемый результат?