Open km-git-acc opened 6 years ago
Have added another file to this branch called mputility.py where I am trying to do the computations using the mpmath library for arbitrary precision. As expected its much slower than numpy and scipy, but may be required when they can no longer provide the precision required (as seen after the first 100 zeroes).
Have to still add the corresponding Kttheta and Ittheta functions, similar to the ones in utility.py
@km-git-acc
I will have a look at it tonight. Is the goal to compute large zeroes for a given t?
Also, can you add docstring to the function with a link to Terry's blog so that we know what you are referring to? Thanks!
@km-git-acc
Is my understanding correct that as of now, we are doing the following
Right?
Added function descriptions.
1) Yeah, we are using 2*zeta zeroes as initial guesses for roots of H_t. fsolve may use any algorithm to find the root (i think currently it is secant method, not the Newton Raphson method).
2) Roots of H_0 are 2roots of zeta function 28.26 -> 2 14.13 and so on
Yes, fsolve will find the closest H_t root. How well this root is estimated depends on various factors
Ofcourse fsolve is fundamentally not necessary (but highly useful) if one is only trying to find real roots. One could just keep evaluating Ht at small intervals of real z (intervals should keep getting finer as z increases), and then look for sign changes
There is a new branch Ht_largez_computation. I have not requested for a merge yet since it may need some more work.
In that branch's utility.py there are several new functions
Ittheta_scaled_by_exp_z_pi_by_8(b,beta,t,theta=0) Kttheta_scaled_by_exp_z_pi_by_8(z,t,n=5) Ht_large_scaled_by_exp_z_pi_by_8(z,t) Ht_large_root_finding_helper(z_as_array,t) Ht_large_root_finder(complex_guess,t)
Essentially, Ht is being computed using the Ittheta and Kttheta functions derived in Terry's blogpost. I have scaled up all the computations by exp(PIx/8), since exp(-1PI*x/8) is the main decay factor in Ht. By scaling up the integrand itself we can make the computations more stable, and avoid small values.
For example, we saw in one of the output files fluctuations in the T heights when they should keep increasing t, n+1th zero, zero location 0.2 126 564.9305992829857 0.2 127 561.9850395375217 0.2 128 569.6719475748397
corresponding 2*zeta zero for the middle line is 566.42346 Ht_large_root_finder(566,0.2) gives 565.61166
But there are still some problems. Different starting values still converge at somewhat different locations. The n parameter and the integration upper limit parameter may have to be tinkered with. We may also have to go for arbitrary precision libraries.
Please check.