axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

## [Axiom-developer] series for sums

 From: Martin Rubey Subject: [Axiom-developer] series for sums Date: Fri, 7 Oct 2005 16:13:20 +0200

```Dear all,

in an attempt to teach axiom to handle limits of sums and products, as in

limit(product((1-q^(N-i))/(1-q^(m-i)),i=0..m-1),q=1)

I ended up with the following patch to fs2ups.spad

kernelToUPS(ker,posCheck?,atanFlag) ==
-- converts a kernel to a power series
(sym := symbolIfCan(ker)) case Symbol =>
(sym :: Symbol) = x => [monomial(1,1)]
[monomial(ker :: FE,0)]
empty?(args := argument ker) => [monomial(ker :: FE,0)]
not member?(x, variables(ker :: FE)) => [monomial(ker :: FE,0)]
empty? rest args =>
arg := first args
is?(ker,"abs" :: Symbol) =>
nthRootToUPS(arg*arg,2,posCheck?,atanFlag)
is?(ker,"%paren" :: Symbol) => exprToUPS(arg,posCheck?,atanFlag)
is?(ker,"log" :: Symbol) => logToUPS(arg,posCheck?,atanFlag)
is?(ker,"exp" :: Symbol) =>
applyIfCan(expIfCan,arg,"exp",posCheck?,atanFlag)
tranToUPS(ker,arg,posCheck?,atanFlag)
is?(ker,"%power" :: Symbol) => powToUPS(args,posCheck?,atanFlag)
is?(ker,"nthRoot" :: Symbol) =>
n := retract(second args)@I
nthRootToUPS(first args,n :: NNI,posCheck?,atanFlag)
!     is?(ker,"%defsum" :: Symbol) =>
!       (summand := exprToUPS(first args,posCheck?,atanFlag)) case %problem =>
!         summand
!       op := operator("%defsum"::Symbol)\$CommonOperators
!       mp:FE->FE:=op cons(#1, rest args)
!       [map(mp, summand.%series)\$UPS]

stateProblem(string name ker,"unknown kernel")

which nearly works. In fact, mathematically, everything is (nearly)
OK. However, there is an evaluation problem:

(58) -> series(sum(i^x,i=1..m),x=1)

(58)
%defsum(%CD,%CD,i,1,m) + %defsum(%CD log(%CD),%CD,i,1,m)(x - 1)
+
2
%CD log(%CD)                   2            3
%defsum(-------------,%CD,i,1,m)(x - 1)  + O((x - 1) )
2
Type: UnivariatePuiseuxSeries(Expression Integer,x,1)

Does anybody know how to make axiom to evaluate these sums? Note that
%defsum(%CD,%CD,i,1,m) is

sum(i,i=1..m)=m*(m+1)/2

of course, %defsum(%CD log(%CD),%CD,i,1,m) will not simplify, it should simply
be displayed as a sum. I suspect that the problem is in map\$UPS, but I don't
really know...

Martin

```

reply via email to

 [Prev in Thread] Current Thread [Next in Thread]