Re: Series is taking too long
- To: mathgroup at yoda.physics.unc.edu
- Subject: Re: Series is taking too long
- From: keiper
- Date: Sat, 23 Jan 93 11:06:11 CST
The problem is that evaluating series by repeatedly taking derivatives is
always slow. Most of the special functions have rules attached to them
for evaluating their series expansion quickly. These rules are defined in
StartUp/Series.m. Unfortunately when I wrote this file I neglected to
include rules for the series expansion of Erf about the origin. The
rules should be
Erf /: Series[Erf[z1_],{z_,aa_,nn_Integer}] :=
Erf[Series[z1, {z,aa,nn}]]/; nn >= 0
Erf /: Literal[Erf[s_SeriesData]] :=
Module[{f0 = faas[s], t},
fs = Integrate[E^(-(f0 + t + O[t]^mterms[1, s])^2), t];
Erf[f0] + 2/Sqrt[Pi] ComposeSeries[fs, s-f0]] /;
simser[s] && s[[4]]>=0
Note that the functions faas[ ], mterms[ ], and simser[ ] are defined
in the file StartUp/Series.m in a private context. The above rules should
either be added to that file (within the private context) or the full names
SpecialFunctions`Series`Private`faas[ ]
SpecialFunctions`Series`Private`mterms[ ]
SpecialFunctions`Series`Private`simser[ ]
should be used.
With these additions we get
In[8]:= Timing[Series[D[(Pi^(1/2)*(-z^2)^(1/2)*Erf[(-z^2)^(1/2)])/
(E^z^2*z),z],{z,0,25}]]
4 6 8 10
2 8 z 16 z 32 z 64 z
Out[8]= {2.86667 Second, -2 + 4 z - ---- + ----- - ----- + ------ -
3 15 105 945
12 14 16 18 20 22
128 z 256 z 512 z 1024 z 2048 z 4096 z
> ------- + ------- - ------- + -------- - --------- + ----------- -
10395 135135 2027025 34459425 654729075 13749310575
24
8192 z 26
> ------------ + O[z] }
316234143225
The next version of Mathematica will include these and other rules in
StartUp/Series.m
Jerry B. Keiper
keiper at wri.com