06/01/2014, 01:04 AM
(This post was last modified: 06/01/2014, 05:00 PM by sheldonison.)
(05/31/2014, 10:11 PM)tommy1729 Wrote: ....
My question was , how do you and mike do it ?
regards
tommy1729
The algorithm is very much like the real valued kneser.gp algorithm. But first, I start with the observation that if you have an exact Tetration Taylor series with a radius of convergence=2, centered at z=0, then you also have an exact theta, where the the theta(z) Taylor series coefficients can by calculated by Fourier series, or by substitution, as a Cauchy integral around a circle.
\( \theta_1 = \alpha_1(\text{tet}(z))-z \)
\( \theta_1(z) = \sum_{n=0}^{\infty} a1_n \exp(2\pi i z)^n \)
\( \theta_2 = \alpha_2(\text{tet}(z))-z \)
\( \theta_2(z) = \sum_{n=0}^{\infty} a2_n \exp(-2\pi i z)^n \)
Viewed in this way, the theta series has a Taylor series representation with a radius of convergence=1. To calculate the theta(z) an series coeffieients as a Cauchy integral, the only rule is that the radius must be less or equal to 1. Now, back to the exact Taylor series for tet, centered at 0, radius of convergence=2. Then one can exactly calculate the a1_n and a2_n theta(z) Taylor series. The tetcomplex code does just that, at
\( z=-0.5+i0.175 .. 0.5+i0.175 \), which corresponds to a radius=0.333, so the theta series is very well behaved at that point. Also, there is a major computational hassle of figuring out which logarithm to use as you take the Abel function of tet(z), and as |Im(z)| get bigger, the problem is observed to go away.
Now what if the initial tet series wasn't exact? Well, we calculate the theta series anyway. I use some tricks to improve convergence of both the Tet series, and the theta(z) series. For example, the tet(z) series a1 & a2 coeffients are modified to make tet(0.5+0.175i)=b^(tet(-0.5+0.175i)), and also tet(0.5-0.175i)=b^(tet(-0.5-0.175i)). For the theta(z) series, I throw away the Laurent 1/z terms. Then I use a combination of the initial tet series, along with the two theta series, to create a new tetration series by generating a unit_circle approximation. See post #13, equations for Kneser for a picture showing how the three functions are combined to generate a new unit_circle approximation, using \( \alpha_1^{-1}(z+\theta_1(z)) \) and \( \alpha_2^{-1}(z+\theta_2(z)) \) and exp(tet), and log(tet), splicing together what is expected to be the most accurate of these approximations at each part of the unit_circle. We treat this unit_circle as if it were an analytic function and use Cauchy to generate all the Taylor series coefficients of the new tet(z) approximation; we ignore the fact that unit_circle is discontinuous at the splice points, and actually has a Laurent series, defined only on the boundary, and we throw away the x^-n terms, and we force set a_0=1, to prevent the function from drifting off tet(0).
\( a_n = \frac{1}{2\pi} \int_{-\pi i}^{\pi i} \exp(-nx)\text{unitcircle}(\exp(x)) dx \;\; \) radius=1 Cauchy integral formula on the unit_circle function to generate next tet approximation
\( \text{ tet}_{i+1} = 1 + \sum_{n=1}^{\infty} a_n x^n\;\; \) from the tet function, we generate the next pari of theta(z) Taylor series, with similar equations
And it turns out, the algorithm tetcomplex.gp uses will give you about 8 binary bits more precision, for the new Tet(z) series, than the initial one, if you use all of the tricks that I use. Also, you need an algorithm to get some sort of initial Tet(z) seed approximation as well, that is good enough to start convergence. After that, keep iterating, until you have your desired precision of your Tetration series. To estimate the error as you go, compare the tetration taylor series with the theta(z) approximations, and see how closely they match.
- Sheldon

