ansi gcl in rpm



I think I made a mistake here.  You can't use taylor with a z[0] of 0, for negative z you should try expanding around some other number besides 0 because you get zero all the time if you use zero.  I used -10.2 I think and that took 44 seconds to compute, then when I sent this e-mail I forgot that I used -10.2.

I don't get it, but that is what I did.  Also I used 14 for the last taylor argument since it takes too long for higher numbers.

Rich




 ------------Original Message------------
From: "Richard Hennessy"<rvh2007 at comcast.net>
To: fateman at cs.berkeley.edu
Cc: maxima at math.utexas.edu
Date: Thu, Jun-12-2008 11:00 AM
Subject: Re: [Maxima] ansi gcl in rpm

Sorry there are a few extra steps I left out

(%i9) float(mybess(1/6,-10));
Evaluation took 0.2600 seconds (0.2600 elapsed)
(eq 9) -0.22332422870625*(-1)^(1/6)

then I have to use rectform(%) to get the answer in standard form for complex numbers.

(%i14) rectform(-0.22332422870625*(-1)^(1/6));
Evaluation took 0.1500 seconds (0.1500 elapsed)
(eq 14) -0.11166211435312*%i-0.11166211435312*sqrt(3)

(%i15) float(-0.11166211435312*%i-0.11166211435312*sqrt(3)), numer;
Evaluation took 0.0700 seconds (0.0700 elapsed)
(eq 15) -0.11166211435312*%i-0.19340445534017

That is in agreement with the bessel run at 100 and 1600 terms so you don't need all 160 of those terms except for large z values, but 16 terms using taylor gives:

(%i16) taylor(bessel_j(1/6,x),x,0,16); 
horner(%,x);
optimize(%);
mybess(x):=''%;
compile(mybess);
Evaluation took 33.5100 seconds (33.5100 elapsed)

(%i22) rectform(float(mybess(-10)));
Evaluation took 0.0000 seconds (0.0000 elapsed)
(eq 22) 0

Now I am really confused.  I don't know which is right now.  Maybe the series is not the definition of bessel_j or maybe I made a typo somewhere.  Also I don't know why I got 44 seconds for the run time before, now it is almost 0 seconds.

One thing though that has bothered me is the fact that there are six possible answers to (-1)^(1/6) and that might make the series inaccurate and a poor way to define the bessel function.

Rich



 ------------Original Message------------
From: "Richard Fateman" <fateman at cs.berkeley.edu>
To: "'Richard Hennessy'" <rvh2007 at comcast.net>
Cc: maxima at math.utexas.edu
Date: Thu, Jun-12-2008 9:07 AM
Subject: RE: [Maxima] ansi gcl in rpm

I get quite different results.  I tried the expr to only 16, rather than
160.
Then mybess(1/6,-10) gives
-1082845135081018553168355738*(-1)^(1/6)*10^(1/6)/(11391066481247301946\
59276527*2^(1/6)*gamma(1/6))

which is not a number at all, unless you do something more.

the second, taylor()  approach gives an expression with a large number of
constants such as bessel_j(7/6,0)  which are, in my maxima, evaluated
numerically
to 0, so the 2nd mybess() evaluates to 0. 

Now I don't know what you really expect, but if the taylor() expression has
lots of constant bessel_j
expressions,then evaluating the whole mess numerically before you compile,
should result in a polynomial of degree
16 in x, wit h floating-point coefficients, and no summation of 160 terms
should be faster.

As for evaluating accurately, the expression expr to 16th term, evaluated at
1/6, and then converted to floats, looks like this:
2.5254888134545135E-116 z
                         32                           30
 (1.174882790201127E+79 z   - 1.2156120602614335E+82 z
                           28                           26
 + 1.1062069748379136E+85 z   - 8.7759086670474326E+87 z
                           24                           22
 + 6.0085721340384927E+90 z   - 3.5090061262784811E+93 z
                           20                           18
 + 1.7240916767114858E+96 z   - 7.0113061519600392E+98 z
                            16                            14
 + 2.3137310301468166E+101 z   - 6.0465504254503521E+103 z
                            12                            10
 + 1.2133411187070328E+106 z   - 1.7957448556864159E+108 z
                            8                            6
 + 1.8556030175426283E+110 z  - 1.2370686783617525E+112 z
                           4                            2
 + 4.700860977774658E+113 z  - 8.1481590281427346E+114 z
 + 3.80247421313328E+115)

So there are terms like 10^79*(-10)^320  and 10^114*(-10)^20  being added
together.
The second term is quite negligible as a float.  I do not know why it should
be advantageous to compute it at all, unless you are interested in an exact
rational number of huge size.

What am I missing here??

RJF


> -----Original Message-----
> From: maxima-bounces at math.utexas.edu 
> [mailto:maxima-bounces at math.utexas.edu] On Behalf Of Richard Hennessy
> Sent: Thursday, June 12, 2008 4:58 AM
> To: fateman at EECS.Berkeley.EDU
> Cc: maxima at math.utexas.edu
> Subject: Re: [Maxima] ansi gcl in rpm
> 
> This is how I am running the function.
> expr:sum((-1)^k*2^(-v-2*k)*z^(v+2*k)/(k!*gamma(v+k+1)),k,0,160)$
> mybess(v,z):=''%$
> 
> mybess(1/6,-10)  // takes about .270 seconds
> 
> Now if I do this
> 
> taylor(bessel_j(1/6,x),x,0,16);  //last parameter of 20 runs 
> out of memory so I lowered it to 16
> horner(%,x);
> optimize(%);
> mybess(x):=''%;
> compile(mybess);
> 
> now
> mybess(-10) takes about 44 seconds.
> It seems like a factor of about 200 difference and the first 
> way is much more accurate.
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
>  ------------Original Message------------
> From: "Richard Fateman" <fateman at cs.berkeley.edu>
> To: "'Richard Hennessy'" <rvh2007 at comcast.net>
> Cc: maxima at math.utexas.edu
> Date: Wed, Jun-11-2008 9:38 PM
> Subject: RE: [Maxima] ansi gcl in rpm
> 
> there are other things you should do, like converting to 
> floats, declaring x
> to be a float, perhaps other issues.
> 
> what exactly are you doing to generate the series?
>  
> 
> > -----Original Message-----
> > From: Richard Hennessy [mailto:rvh2007 at comcast.net] 
> > Sent: Wednesday, June 11, 2008 2:42 PM
> > To: fateman at EECS.Berkeley.EDU
> > Cc: 'Maxima List'
> > Subject: RE: [Maxima] ansi gcl in rpm
> > 
> > This is worse than just using the series directly.  It may be 
> > fast for the sin function but not the bessels.
> > 
> > 
> > 
> > 
> >  ------------Original Message------------
> > From: "Richard Fateman" <fateman at cs.berkeley.edu>
> > To: "'Richard Hennessy'" <rvh2007 at comcast.net>
> > Cc: "'Maxima List'" <maxima at math.utexas.edu>
> > Date: Tue, Jun-10-2008 6:40 PM
> > Subject: RE: [Maxima] ansi gcl in rpm
> > 
> > try taylor(sin(x),x,0,20);
> > horner(%,x);
> > optimize(%);
> > f(x):=''%;
> > compile(f);
> >  
> > 
> > > -----Original Message-----
> > > From: maxima-bounces at math.utexas.edu 
> > > [mailto:maxima-bounces at math.utexas.edu] On Behalf Of 
> > Richard Hennessy
> > > Sent: Tuesday, June 10, 2008 3:30 PM
> > > To: fateman at EECS.Berkeley.EDU; 'Michel Talon'
> > > Cc: 'Maxima List'
> > > Subject: Re: [Maxima] ansi gcl in rpm
> > > 
> > > I meant taylor takes too long not the power series.
> > > 
> > >
> > 
> > 
> > 
> 
> 
> _______________________________________________
> Maxima mailing list
> Maxima at math.utexas.edu
> http://www.math.utexas.edu/mailman/listinfo/maxima
> 


_______________________________________________
Maxima mailing list
Maxima at math.utexas.edu
http://www.math.utexas.edu/mailman/listinfo/maxima