#C10.txt, Feb. 19, 2018, Experimental Mathematics (RU, Spring 2018) HelpAshan:=proc(): end: Help:=proc(): print(`sin1(z,N), Check92(N) ,Check121(x,y,sig)`): end: read `zero10.txt`: #Z10[i]: the imaginary part of the i-th POSITIVE root ##stolen from Ahshan's homework hw8 #hw8AhsanKhan.txt #OK to post. #Problem 1. Contour:=proc(R,delta): implicitplot({x+delta, x^2+y^2-R^2}, x = -delta..R, y = -R .. R): end: #Problem 2. I've attached a list of the first 10000 zeroes instead of only the first 355 (I call it Z10). #Left-hand-side as a product of Gamma and zeta. ZG := proc(s): s*(s-1)*Pi^(-s/2)*GAMMA(s/2)*Zeta(s): end: #Right hand side as a product over zeroes. To ensure convergence every zero 1/2+I*p must be multiplied by 1/2-I*p #otherwise we'd be missing half of them by just using the naive list. Prod1 := proc(s,N) local k: exp(-(1+gamma/2 - log(2*Pi^(1/2)))*s)*mul( (1-s/(1/2 +I*Z10[k])) * (1-s/(1/2-I*Z10[k])) * exp(s/(1/2 +I*Z10[k])) * exp(s/(1/2 -I*Z10[k])) , k=1..N): end: Check5D := proc(s,N): evalf(ZG(s)/Prod1(s,N)): end: #Check5D(3+I) at N=10,100,1000 = 1.077710879+0.6186344482e-1*I, 1.025020554+0.1913396700e-1*I, 1.005763934+0.4342377707e-2*I. #Check(2) at N=10,100,1000,10000 = 1.005763934+0.4342377707e-2*I, 1.012521124-2.846504996*10^(-11)*I,1.002882531+7.219352641*10^(-11)*I #1.000539499+2.728510592*10^(-10)*I. #Getting quite close to 1!. #Problem 3. vM := proc(n) local i: add(mobius(i)*log(n/i), i in divisors(n)): end: #Note again, one has to take into account the zeroes with negative imaginary part. Check5E := proc(x,N) local k,j,L,R: L:= add(vM(k),k=1..x-1) + 1/2*vM(x): R:= x - add(x^(1/2 + I*Z10[j])/(1/2 + I*Z10[j]) + x^(1/2-I*Z10[j])/(1/2-I*Z10[j]),j=1..N) - log(2*Pi)-1/2*log(1-1/x^2): evalf(L-R): end: #Check5E(11, 9000)=0.000078182598, pretty close to zero. ###end of theft sin1:=proc(z,N) local n: z*mul((1-z/(Pi*n))*(1+z/(Pi*n)),n=1..N): end: #Check92(n): checks (9.2) with T=the n-th root of Zeta(s) Check92:=proc(n) local T: T:=Z10[n]: evalf((n-(T/(2*Pi))*log(T/2/Pi/exp(1)))/log(T)): end: #Check121(x,y,sig): checks (12.1) in H. Iwaniec's book Check121:=proc(x,y,sig) local s,t, g1,g2,eps,edna: if not (sig>=0 and sig<=1) then print(`sig has to be between 0 and 1`): RETURN(FAIL): fi: t:=evalf(2*Pi*x*y): s:=evalf(sig+I*t): g1:=evalf(Pi^(-s/2)*GAMMA(s/2)): g2:=evalf(Pi^(-(1-s)/2)*GAMMA((1-s)/2)): eps:=g2/g1: edna:=Zeta(s)-add(n^(-s),n=1..trunc(x))-eps*add(n^(s-1),n=1..trunc(y)): edna:=evalf(edna): edna:=edna/(x^(-sig)+y^(sig-1)*t^(1/2-sig)): abs(edna): end: