On 4/1/08, Stavros Macrakis <macrakis at alum.mit.edu> wrote:
> I don't have Maxima where I am (travelling), but I imagine that using
> the same index names for the inner and outer sums will cause problems
> (and is not standard mathematical usage either).
Well, as it stands, the sum-simplfication code attempts to treat
the summation index as a local variable, although it messes up
this problem.
(%i1) trace (?simpsum2, ?simpsum1, ?simpsum1\-save);
(%o1) [simpsum2, simpsum1, simpsum1-save]
(%i2) display2d : false;
(%o2) false
(%i3) sum ((x[j] - sum (x[j], j, 1, n)/n)^2, j, 1, n);
1 Enter ?simpsum1 [x[?g15869],?g15869,1,n]
1 Exit ?simpsum1 'sum(x[?g15869],?g15869,1,n)
1 Enter ?simpsum1 [x[?g15869],?g15869,1,n]
1 Exit ?simpsum1 'sum(x[?g15869],?g15869,1,n)
1 Enter ?simpsum1 [x[j],j,1,n]
1 Exit ?simpsum1 'sum(x[j],j,1,n)
1 Enter ?simpsum1 [(x[j]-('sum(x[j],j,1,n))/n)^2,j,1,n]
1 Exit ?simpsum1 'sum((x[j]-('sum(x[j],j,1,n))/n)^2,j,1,n)
(%o3) 'sum((x[j]-('sum(x[j],j,1,n))/n)^2,j,1,n)
(%i4) %, simpsum;
1 Enter ?simpsum1 [x[?g15929],?g15929,1,n]
1 Enter ?simpsum1\-save [x[?g15929],?g15929,1,n]
1 Enter ?simpsum2 [x[?g15929],?g15929,1,n]
2 Enter ?simpsum1 [x[?g15929],?g15929,1,n]
2 Exit ?simpsum1 'sum(x[?g15929],?g15929,1,n)
1 Exit ?simpsum2 'sum(x[?g15929],?g15929,1,n)
1 Exit ?simpsum1\-save 'sum(x[?g15929],?g15929,1,n)
1 Exit ?simpsum1 'sum(x[?g15929],?g15929,1,n)
1 Enter ?simpsum1 [x[?g15929],?g15929,1,n]
1 Enter ?simpsum1\-save [x[?g15929],?g15929,1,n]
1 Enter ?simpsum2 [x[?g15929],?g15929,1,n]
2 Enter ?simpsum1 [x[?g15929],?g15929,1,n]
2 Exit ?simpsum1 'sum(x[?g15929],?g15929,1,n)
2 Enter ?simpsum1 [x[?g15929],?g15929,1,n]
2 Exit ?simpsum1 'sum(x[?g15929],?g15929,1,n)
1 Exit ?simpsum2 'sum(x[?g15929],?g15929,1,n)
1 Exit ?simpsum1\-save 'sum(x[?g15929],?g15929,1,n)
1 Exit ?simpsum1 'sum(x[?g15929],?g15929,1,n)
1 Enter ?simpsum1 [x[j],j,1,n]
1 Enter ?simpsum1\-save [x[j],j,1,n]
1 Enter ?simpsum2 [x[j],j,1,n]
2 Enter ?simpsum1 [x[j],j,1,n]
2 Exit ?simpsum1 'sum(x[j],j,1,n)
1 Exit ?simpsum2 'sum(x[j],j,1,n)
1 Exit ?simpsum1\-save 'sum(x[j],j,1,n)
1 Exit ?simpsum1 'sum(x[j],j,1,n)
1 Enter ?simpsum1 [(x[j]-('sum(x[j],j,1,n))/n)^2,j,1,n]
1 Enter ?simpsum1\-save [(x[j]-('sum(x[j],j,1,n))/n)^2,j,1,n]
1 Enter ?simpsum2 [(x[j]-('sum(x[j],j,1,n))/n)^2,j,1,n]
2 Enter ?simpsum1 [x[j+1],j+1,1,n]
2 Exit ?simpsum1 x[j+1]*n
2 Enter ?simpsum1 [x[0],0,1,n]
2 Exit ?simpsum1 'sum(x[0],0,1,n)
1 Exit ?simpsum2 0
1 Exit ?simpsum1\-save 0
1 Exit ?simpsum1 0
(%o4) 0
The local variable stuff is implemented by gensyms which appear above.
I don't know why the simplification seems to be repeated,
once through with gensyms and once without.
On the second trip through, SIMPSUM2 gets confused, as shown by
the last 10 lines or so.
Dunno what's going on; I will take a look at it. It should work.
Robert Dodier