RE: Sums and Products: Compact Notation and Differentiation

• To: mathgroup at smc.vnet.net
• Subject: [mg23947] RE: [mg23901] Sums and Products: Compact Notation and Differentiation
• From: "David Park" <djmp at earthlink.net>
• Date: Fri, 16 Jun 2000 00:57:35 -0400 (EDT)
• Sender: owner-wri-mathgroup at wolfram.com

```> -----Original Message-----
> From: Justus Piater [mailto:piater at cs.umass.edu]
To: mathgroup at smc.vnet.net
> Hi,
>
> I am relatively new to Mathematica (Version 3.0), and have been able
> to get sensible results using expressions involving Sum and Product
> symbols only if the summation/multiplication ranges are given by
> constants. I have the following specific problems:
>
> 1. When I have Mathematica operate on a formula involving Sum and
>    Product symbols with constant ranges, it always displays the result
>    in expanded form, without these symbols, even though it often seems
>    easily possible and much more compact to use Sums and Products. Is
>    is possible to have Mathematica retain the convenient notation, and
>    prevent it from expanding the terms?
>
> 2. I can't get Mathematica to give me simple derivatives of
>    expressions involving Sums and Products, unless the ranges are
>    known to Mathematica so it can expand them. For example, I would
>    like to type:
>
>        D[Sum[Subscript[a,i]x^i,{i,n}],x]
>
>    and get as output some rendering of:
>
>        Sum[i Subscript[a,i]x^(i-1),{i,n}]
>
>    Is this really not possible?
>
> Thanks,
> Justus
>
> --
> Justus Piater              Laboratory for Perceptual Robotics   U of Mass
> www.cs.umass.edu/~piater       Computer Vision Laboratory         Amherst
>
>

Justus,

This looks like a good place for rule-based programming. You can define a
set of rules which carry out the desired operations. In the following rules
HoldPattern is necessary on the left hand side of the rules - otherwise
Mathematica tries to evaluate the pattern Sum. The first rule does your last
example. The second rule combines two sums. The third rule changes the index
range. You can define other rules for other tasks. I changed the form of the
iterator to allow flexibility for the third rule.

s1 = Sum[Subscript[a, i]x^i, {i, 1, n}];
s2 = Sum[Subscript[b, i]x^(2i), {i, 1, n}];

rule1 = HoldPattern[Sum[term_, range_]] :> Sum[Evaluate[D[term, x]], range];
rule2 = HoldPattern[Sum[term1_, range_] + Sum[term2_, range_]] :>
Sum[term1 + term2, range];
rule3 = HoldPattern[Sum[term_, {i_, 1, n_}]] :>
Sum[Evaluate[term /. i -> i + 1], {i, 0, n - 1}];

s1 /. rule1
Sum[i*x^(-1 + i)*Subscript[a, i], {i, 1, n}]

s1 + s2 /. rule2
Sum[Subscript[a, i]*x^i + Subscript[b, i]*x^(2*i), {i, 1, n}]

s1 /. rule3
Sum[x^(1 + i)*Subscript[a, 1 + i], {i, 0, n - 1}]

David Park