02/09/2019, 02:25 PM
(This post was last modified: 02/10/2019, 12:18 AM by sheldonison.)
Quote:... the Riemann mapping ... is a non-linear problem, because the theta function has to be applied to the input of the jsexp function.
...The solution is to solve the inverse operation, mapping the regular slog to the jslog. In this situation, the theta function is applied to the output of the jslog, which is linear. Hence ... suited to matrix math...
That was my first ah-ha moment. But the biggest surprise for me was when I fully understood the effect of solving for the complex conjugate of the negative terms. Given a real base like base e, the conjugation step is a trivial solution to the rslog of the lower fixed point... I've been wondering for years how Sheldon managed to combine the upper and lower rslog functions to derive his solution...
I could have "cheated" and looked at Sheldon's code, but it was far more fulfilling (and frustrating) to work it out on my own...
Just some quick clarifications on "Sheldon's" codes. There are many of them.
- kneser.gp and tetcomplex.gp actually do compute the 1-cyclic non-linear theta/Riemann mapping iteratively. Some of the internal code is really ugly though. I don't use it anymore ...
- fatou.gp computes Kneser's slog, \( \text{slogk}(z)=\alpha(z)+\theta_{S}\left(\alpha(z)\right) \), which takes advantage of Jay's accelerated technique but it does not use Jay's slog or Andrew's slog. I think Jay would call my complex valued Abel function \( \alpha(z) \) the rslog. fatou.gp is a completely different iterative algorithm. fatou.gp works for a very large range of real and complex bases (using both fixed point's schroder functions), and has a default precision of \p 38 which gives ~35 decimal digit accurate results, and initializes for base "e" in 0.35 seconds. For \p 77, the time increases to ~5 seconds. Because this is a linear problem, I eventually also got a matrix implementation of fatou.gp working; but the iterative technique has advantages in that the code can figure out the required parameters as it iterates.
- jpost.gp in post#20, which was developed entirely during the lifetime of this thread, using the Schroder and fixed point functions from fatou.gp. jpost.gp computes \( \text{kslog}(z)\approx\text{jslog}(z)+\theta_{R}\left(\text{jslog}(z)\right)\approx\alpha(z)+\theta_{S}\left(\alpha(z)\right) \) by cancelling the negative terms in the \( \theta_S \) mapping using a second matrix. I have only calculated \( \theta_{R} \) for base "e" and not for any other real valued bases or complex bases.
So far, for my jpost.gp program I started by focusing on extensions of jslog that require the minimum amount of extra computation time than initializing jslog. But what if you relax that constraint, and make the \( \theta_{Rj};\;\theta_{Sj} \) matrix mappings arbitrarily large. Then I observe that the "stitching" error in post#20 starts to fade away. For a fixed jslog, with an arbitrarily large number of terms in \( \theta_{Rj};\;\theta_{Sj} \), do the slogthtr and slogthts functions in some sense converge towards each other? edit: question. In general, the precision of the resulting jslogtht is limited by the error term discontinuity in the jslog, where the theta mappings are computed. Can we approximate this as the number of terms in jtaylor gets arbitrarily large? z0rgt is the somewhat arbitrary term I've been using. z0rgt=0.9455+0.4824i; errterm~= jslog(z0rgt)-jslog(ln(z0rgt))-1
- Sheldon

