06/15/2011, 11:21 PM
(This post was last modified: 06/16/2011, 04:51 AM by sheldonison.)

(06/15/2011, 10:22 PM)mike3 Wrote:Hey Mike,(06/15/2011, 03:18 PM)sheldonison Wrote: The first thing I notice is that your "step 2" is trying to compute the coefficients for theta, via the Fourier integral at the real axis, from -1 to zero. Theta(z) has a really nasty singularity at integer coefficient. Analytic Fourier analysis works really great with very minimal number of terms if you're generating the Fourier analysis of an analytic function, but the closer to the singularity you are, the more of a problem you have. As noted in the post above, I got around this by computing the integral at imag(z)=0.12i. I actually computed theta(z) from -0.5+0.12i to +0.5+0.12i, because that was centered very close to the middle of my sexp(z) approximation, where it was most accurate. 0.12i is far enough away from the singularity that the theta(z) function is very well behaved, and requires minimal terms in the Fourier analysis. fyi, my sexp(z) function is sampled in a unit circle around z=0. But the price you pay is that theta(z) now only converges for imag(z)>=0.12i. I went through many many iterations about how to deal with that, originally using a discreet Cauchy sampling, before I got to the current implementation, that splices together the Kneser/Riemann approximation with log(z)/exp(z), from the previous iterations sexp(z) approximation, which works really nicely. So that would be a change to your step (3) for your Cauchy integral.

So you would use a countour like that of Kouznetsov's Cauchy method, right (i.e. half-circle connected to another with straight lines to form a pill- or oval-like shape), and when , you switch to integrating over the Taylor appproximation from the last run? I'm not sure what you mean by "log/exp" of it, though -- if you're integrating with zero at the center, the Taylor already converges best there, so I don't see why you need to take log/exp.

And I guess that why it doesn't converge below is that the function is not perfectly periodic initially, so when the area integrated over is repeated, it forms something not analytic along the given parallel. But I suppose this goes away as the algorithm progresses, and so eventually the theta mapping converges right up to near the real axis.

Take a look at the picture in this post, to see how I build the radius=1 sampling circle for the next sexp(z) function. If you had like a trillion terms in the theta(z) Fourier series, then you still wouldn't get nearly as much precision at the real axis as I can get in the sexp(z) series after 30 seconds (13 iterations), with 109 terms in the sexp(z) taylor series, 32 decimal digits accuracy. That sexp(z) was generated from its precursor (as described in the picture), and the , where the theta(z) series had 93 terms in it. The sexp(z) series is more than accurate enough to generate that one trillion term theta(z) series at the real axis. By definition, the infinite Fourier series will only converge where is sampled or at imag(z)>imag(sample). Precision for the finite series falls off logarithmically, from the imag(sample), to the real axis. The 93 term theta(z) is accurate to 32 decimal digits for imag(z)>=0.12i, but is only accurate to ~3 decimal digits at the real axis.

The number of Fourier series terms required in theta(z) goes up approximately as 1/imag(z), so if we needed 93 terms as 0.12i, then we would need 93x12=~1100 series terms at 0.01i, to get equivalent accuracy. Although, we don't need an infinite number of terms at the real axis, since the terms do get smaller too.

- Sheldon