08/09/2010, 06:27 PM
(This post was last modified: 08/11/2010, 03:57 PM by sheldonison.)

There are main three ideas which improve convergence, plus some other ideas as well. I will discuss the first two main ideas in this post.

(1) Most of the terms of the RiemannCircle Taylor series are not computionally significant to the sexp(z) Taylor series.

(2) Generating the RiemannCircle Taylor series at an idelta (imaginary delta) allows much much more accurate/precise results in the RiemannCircle Taylor series since the RiemannCircle singularity is at a radius of 1, and the idelta corresponds to a radius <1.

(3) the sexp(z) seems to be more precise than the RiemannCircle Taylor series it was generated from, by approximately 8 binary bits.

The sexp(z) for imag(z)>=0, generated from the RiemannCircle function converges slowly at the real axis. In theory, if the Taylor series for the RiemannCircle function has an infinite number of terms, it doesn't matter. The RiemannCircle function converges, and the resulting sexp(z) function, at least for imag(z)>=0, will also be infinitely accurate.

However, the number of terms required in the RiemannCircle function is prohibitively large. This chart extrapolates from the patterns I observe from much smaller number of terms. The largest number of terms I've calculated is 12800 Taylor series terms, where the log_2 of the 12800th RiemannCircle Taylor series term was -19.83. If the pattern holds, a Taylor series with around a billion terms would give a bit more than 35 binary bits of precision, or 10.5 decimal digits of precision. Calculating a one billion term Taylor series is not a practical! Henryk, I haven't succeeded in figuring out how to display images uploaded as attachments, apologies! I think I uploaded an image, attachment=728, but couldn't add it to the post. So I'm still using my personal website for images!

The two ideas I gave above uncover a way out of this conundrum. First off, we use the algorithm given for generating the sexp Taylor series from the Riemann mapping Taylor series. The sexp Taylor series is much more well behaved, and for double precision accuracy (52 binary bits), all we need is an sexp(z) Taylor series with 50 terms in it. This requires 100 sampling points, which can be even placed on the upper half of the unit circle centered at z=0, which is the unit circle I used to calculated the sexp(z) Taylor series. None of these 50 terms need be on the real axis.

Consider this set of 50 points:

e^(pi*I*1/200), e^(pi*I*3/200).... e^(pi*I*199/200)

The imaginary value for the first point is 0.0157*I. I call this value idelta. This corresponds to a radius of 0.905 in the RiemannCircle Taylor series. This means the 400th term in the RiemannCircle Taylor series is being multiplied by 7E-18, which means it is not computationally relevant! Likewise for all terms >=400! So we calculated a billion terms in the RiemannCircle Taylor series to get 13 decimal digits of accuracy at the real axis, and only 300 of those terms are relevant when generating the sexp(z) Taylor series, with 50 terms.

The other idea, is that generating the Taylor series for the RiemannCircle at a radius corresponding to idelta improves the convergence of the lower frequency terms too. Basically, the singularity is at radius=1. The unit circle of the RiemannCircle function we're generating a Fourier series for is poorly behaved at a radius of 1. But at a radius of 0.905, corresponding to idelta, it is much better behaved. Here is a plot of the imaginary, and real contours of the theta(z) function (corresponds to the RiemannCircle) at a radius of 1, showing the singularity, at integer values of z.

By moving to idelta=~0.016, the singularity is largely gone. And the Fourier series for the theta(z) (RiemannCircle Taylor series) converges very nicely with only 800 sampling points. The first two images below are blow ups of the imaginary and real contours, at idelta. The third image shows the log_2 of the RiemanCircle terms calculated at i=0, and then calculated at i=0.016i. Notice the loss of precision for terms>300 when the Taylor series at idelta terms are less than 2^-57 (I will discuss significance later). By the way, this scheme works quite nicely, since we only calculate the RiemannCircle for values >= idelta. Again, I will comment more later, in my next post. This is taking even longer than I thought!

- enjoy, Sheldon

(1) Most of the terms of the RiemannCircle Taylor series are not computionally significant to the sexp(z) Taylor series.

(2) Generating the RiemannCircle Taylor series at an idelta (imaginary delta) allows much much more accurate/precise results in the RiemannCircle Taylor series since the RiemannCircle singularity is at a radius of 1, and the idelta corresponds to a radius <1.

(3) the sexp(z) seems to be more precise than the RiemannCircle Taylor series it was generated from, by approximately 8 binary bits.

The sexp(z) for imag(z)>=0, generated from the RiemannCircle function converges slowly at the real axis. In theory, if the Taylor series for the RiemannCircle function has an infinite number of terms, it doesn't matter. The RiemannCircle function converges, and the resulting sexp(z) function, at least for imag(z)>=0, will also be infinitely accurate.

However, the number of terms required in the RiemannCircle function is prohibitively large. This chart extrapolates from the patterns I observe from much smaller number of terms. The largest number of terms I've calculated is 12800 Taylor series terms, where the log_2 of the 12800th RiemannCircle Taylor series term was -19.83. If the pattern holds, a Taylor series with around a billion terms would give a bit more than 35 binary bits of precision, or 10.5 decimal digits of precision. Calculating a one billion term Taylor series is not a practical! Henryk, I haven't succeeded in figuring out how to display images uploaded as attachments, apologies! I think I uploaded an image, attachment=728, but couldn't add it to the post. So I'm still using my personal website for images!

The two ideas I gave above uncover a way out of this conundrum. First off, we use the algorithm given for generating the sexp Taylor series from the Riemann mapping Taylor series. The sexp Taylor series is much more well behaved, and for double precision accuracy (52 binary bits), all we need is an sexp(z) Taylor series with 50 terms in it. This requires 100 sampling points, which can be even placed on the upper half of the unit circle centered at z=0, which is the unit circle I used to calculated the sexp(z) Taylor series. None of these 50 terms need be on the real axis.

Consider this set of 50 points:

e^(pi*I*1/200), e^(pi*I*3/200).... e^(pi*I*199/200)

The imaginary value for the first point is 0.0157*I. I call this value idelta. This corresponds to a radius of 0.905 in the RiemannCircle Taylor series. This means the 400th term in the RiemannCircle Taylor series is being multiplied by 7E-18, which means it is not computationally relevant! Likewise for all terms >=400! So we calculated a billion terms in the RiemannCircle Taylor series to get 13 decimal digits of accuracy at the real axis, and only 300 of those terms are relevant when generating the sexp(z) Taylor series, with 50 terms.

The other idea, is that generating the Taylor series for the RiemannCircle at a radius corresponding to idelta improves the convergence of the lower frequency terms too. Basically, the singularity is at radius=1. The unit circle of the RiemannCircle function we're generating a Fourier series for is poorly behaved at a radius of 1. But at a radius of 0.905, corresponding to idelta, it is much better behaved. Here is a plot of the imaginary, and real contours of the theta(z) function (corresponds to the RiemannCircle) at a radius of 1, showing the singularity, at integer values of z.

By moving to idelta=~0.016, the singularity is largely gone. And the Fourier series for the theta(z) (RiemannCircle Taylor series) converges very nicely with only 800 sampling points. The first two images below are blow ups of the imaginary and real contours, at idelta. The third image shows the log_2 of the RiemanCircle terms calculated at i=0, and then calculated at i=0.016i. Notice the loss of precision for terms>300 when the Taylor series at idelta terms are less than 2^-57 (I will discuss significance later). By the way, this scheme works quite nicely, since we only calculate the RiemannCircle for values >= idelta. Again, I will comment more later, in my next post. This is taking even longer than I thought!

- enjoy, Sheldon