如何合并两个和并分解出一个共同的元素表达式?

How to combine two sums and factor out a common element expression?

这里是初始前提:两个和s1和s2相加;求和元素表达式有一个公因数 a[n].

s1: sum(r1[m,q]*b[m,n]*a[n],n,0,N)$
s2: sum(r2[m,q]*c[m,n]*a[n],n,0,N)$
s1+s2;

我希望合并总和并分解出公共元素表达式 a[n]

s12: sum(a[n]*(r1[m,q]*b[m,n]+r2[m,q]*c[m,n]),n,0,N);

但是,我无法让Maxima产生这样的收缩。我能够获得的最大简化是使用 sumcontract(s1+s2) 并且它产生两个总和而没有分解出公共元素:

r1[m,q]*sum(b[m,n]*a[n], n,0,N) + r2[m,q]*sum(c[m,n]*a[n], n,0,N);

如何让 Maxima 像上面的 s12 那样从 s1+s2 中生成分解出的表达式?

注意:如果我们删除 r1r2,那么 factor(sumcontract(s1+s2)) 确实会产生预期的 s12 表达式。但是,如果两者都存在,它会产生两个总和,并且不会像提到的那样分解出 a[n]

这个怎么样。我应用了 sumcontractintosumfactor

(%i1) s1: sum(r1[m,q]*b[m,n]*a[n],n,0,N)$

(%i2) s2: sum(r2[m,q]*c[m,n]*a[n],n,0,N)$

(%i3) s1 + s2;
                  N                       N
                 ====                    ====
                 \                       \
(%o3)     r2      >    c     a  + r1      >    b     a
            m, q /      m, n  n     m, q /      m, n  n
                 ====                    ====
                 n = 0                   n = 0
(%i4) intosum (%);
           N                       N
          ====                    ====
          \                       \
(%o4)      >    c     r2     a  +  >    b     r1     a
          /      m, n   m, q  n   /      m, n   m, q  n
          ====                    ====
          n = 0                   n = 0
(%i5) sumcontract (%);
             N
            ====
            \
(%o5)        >    (c     r2     a  + b     r1     a )
            /       m, n   m, q  n    m, n   m, q  n
            ====
            n = 0
(%i6) factor (%);
              N
             ====
             \
(%o6)         >    (c     r2     + b     r1    ) a
             /       m, n   m, q    m, n   m, q   n
             ====
             n = 0

在此,intosum 将常数因子推回总和。