Seeing that use of factor_terms makes me think again that expand
should definitely pull out that constant.

On Thu, 30 Apr 2020 at 22:27, Chris Smith <[email protected]> wrote:
>
> The following light-weight version of what Oscar has suggested might be 
> sufficient:
>
> >>> def add(s,o):
> ...   assert s.func == o.func
> ...   return s.func(s.lhs+o.lhs,o.rhs+s.rhs)
> ...
> >>> def mul(s,o):
> ...   return s.func(o*s.lhs,o*s.rhs)
> ...
> >>> def rmul(s,o):
> ...   return s.func(o*s.lhs,o*s.rhs)
> ...
> >>> Eq.__add__ = add
> >>> Eq.__mul__ = mul
> >>> Eq.__rmul__ = rmul
> >>>
> >>> from sympy import symbols, Eq, expand, simplify, latex, oo, Sum
> >>> x, y, p, q, a, j, Aj, Bj = symbols('x y p q a j A_j B_j')
> >>> eq1 = Eq(x, y)
> >>> eq2 = Eq(p, q)
> >>> eq1 + eq2
> Eq(p + x, q + y)
> >>> a*eq1
> Eq(a*x, a*y)
>
>
> And for the Sums, use IndexedBase otherwise Sum doesn't know that the symbols 
> depend on j
>
> >>> Aj = IndexedBase("A")[j]>>> Bj = IndexedBase("B")[j]
> >>> ex1 = Sum(Aj + Bj, (j, -oo, oo))
> >>> ex2 = Sum(Aj - Bj, (j, -oo, oo))
> >>> ex1 + ex2
> Sum(A[j] - B[j], (j, -oo, oo)) + Sum(A[j] + B[j], (j, -oo, oo))
> >>> expand(_)
> 2*Sum(A[j], (j, -oo, oo)) + Sum(-B[j], (j, -oo, oo)) + Sum(B[j], (j, -oo, oo))
> >>> factor_terms(_)
> 2*Sum(A[j], (j, -oo, oo))
>
>
>
> --
> You received this message because you are subscribed to the Google Groups 
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/sympy/ae75c13d-d888-441f-9742-c3f8c3014506%40googlegroups.com.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/CAHVvXxS_sA2O0JTvBE%3DtG%2BOA6Hd3CGH48BXVO10C2DjRpuDOww%40mail.gmail.com.

Reply via email to