Definition of the Riemann zeta function #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
Main definitions: #
riemann_zeta
: the Riemann zeta functionζ : ℂ → ℂ
.riemann_completed_zeta
: the completed zeta functionΛ : ℂ → ℂ
, which satisfiesΛ(s) = π ^ (-s / 2) Γ(s / 2) ζ(s)
(away from the poles ofΓ(s / 2)
).riemann_completed_zeta₀
: the entire functionΛ₀
satisfyingΛ₀(s) = Λ(s) + 1 / (s - 1) - 1 / s
wherever the RHS is defined.
Note that mathematically ζ(s)
is undefined at s = 1
, while Λ(s)
is undefined at both s = 0
and s = 1
. Our construction assigns some values at these points (which are not arbitrary, but
I haven't checked exactly what they are).
Main results: #
differentiable_completed_zeta₀
: the functionΛ₀(s)
is entire.differentiable_at_completed_zeta
: the functionΛ(s)
is differentiable away froms = 0
ands = 1
.differentiable_at_riemann_zeta
: the functionζ(s)
is differentiable away froms = 1
.zeta_eq_tsum_of_one_lt_re
: for1 < re s
, we haveζ(s) = ∑' (n : ℕ), 1 / (n + 1) ^ s
.riemann_completed_zeta₀_one_sub
,riemann_completed_zeta_one_sub
, andriemann_zeta_one_sub
: functional equation relating values ats
and1 - s
riemann_zeta_neg_nat_eq_bernoulli
: for anyk ∈ ℕ
we have the formulariemann_zeta (-k) = (-1) ^ k * bernoulli (k + 1) / (k + 1)
riemann_zeta_two_mul_nat
: formula forζ(2 * k)
fork ∈ ℕ, k ≠ 0
in terms of Bernoulli numbers
Outline of proofs: #
We define two related functions on the reals, zeta_kernel₁
and zeta_kernel₂
. The first is
(θ (t * I) - 1) / 2
, where θ
is Jacobi's theta function; its Mellin transform is exactly the
completed zeta function. The second is obtained by subtracting a linear combination of powers on
the interval Ioc 0 1
to give a function with exponential decay at both 0
and ∞
. We then define
riemann_completed_zeta₀
as the Mellin transform of the second zeta kernel, and define
riemann_completed_zeta
and riemann_zeta
from this.
Since zeta_kernel₂
has rapid decay and satisfies a functional equation relating its values at t
and 1 / t
, we deduce the analyticity of riemann_completed_zeta₀
and the functional equation
relating its values at s
and 1 - s
. On the other hand, since zeta_kernel₁
can be expanded in
powers of exp (-π * t)
and the Mellin transform integrated term-by-term, we obtain the relation
to the naive Dirichlet series ∑' (n : ℕ), 1 / (n + 1) ^ s
.
Definition of the Riemann zeta function and related functions #
The completed Riemann zeta function with its poles removed, Λ(s) + 1 / s - 1 / (s - 1)
.
Equations
- riemann_completed_zeta₀ s = mellin zeta_kernel₂ (s / 2)
The completed Riemann zeta function, Λ(s)
, which satisfies
Λ(s) = π ^ (-s / 2) Γ(s / 2) ζ(s)
(up to a minor correction at s = 0
).
Equations
- riemann_completed_zeta s = riemann_completed_zeta₀ s - 1 / s + 1 / (s - 1)
The Riemann zeta function ζ(s)
. We set this to be irreducible to hide messy implementation
details.
Equations
- riemann_zeta = function.update (λ (s : ℂ), ↑real.pi ^ (s / 2) * riemann_completed_zeta s / complex.Gamma (s / 2)) 0 ((-1) / 2)
First properties of the zeta kernels #
Relate zeta_kernel₁
to the Jacobi theta function on ℍ
. (We don't use this as the definition
of zeta_kernel₁
, since the sum over ℕ
rather than ℤ
is more convenient for relating zeta to
the Dirichlet series for re s > 1
.)
Continuity of zeta_kernel₁
.
Local integrability of zeta_kernel₁
.
Local integrability of zeta_kernel₂
.
Functional equation for zeta_kernel₂
.
Bounds for zeta kernels #
We now establish asymptotic bounds for the zeta kernels as t → ∞
and t → 0
, and use these to
show holomorphy of their Mellin transforms (for 1 / 2 < re s
for zeta_kernel₁
, and all s
for
zeta_kernel₂
).
Bound for zeta_kernel₁
for large t
.
Bound for zeta_kernel₂
for large t
.
Precise but awkward-to-use bound for zeta_kernel₂
for t → 0
.
Weaker but more usable bound for zeta_kernel₂
for t → 0
.
Bound for zeta_kernel₁
for t → 0
.
Differentiability of the completed zeta function #
The Mellin transform of the first zeta kernel is holomorphic for 1 / 2 < re s
.
The Mellin transform of the second zeta kernel is entire.
The modified completed Riemann zeta function Λ(s) + 1 / s - 1 / (s - 1)
is entire.
The completed Riemann zeta function Λ(s)
is differentiable away from s = 0
and s = 1
(where it has simple poles).
The Riemann zeta function is differentiable away from s = 1
.
The trivial zeroes of the zeta function.
Relating the Mellin transforms of the two zeta kernels #
Relating the first zeta kernel to the Dirichlet series #
Auxiliary lemma for mellin_zeta_kernel₁_eq_tsum
, computing the Mellin transform of an
individual term in the series.
The Riemann zeta function agrees with the naive Dirichlet-series definition when the latter
converges. (Note that this is false without the assumption: when re s ≤ 1
the sum is divergent,
and we use a different definition to obtain the analytic continuation to all s
.)
Alternate formulation of zeta_eq_tsum_one_div_nat_add_one_cpow
without the + 1
, using the
fact that for s ≠ 0
we define 0 ^ s = 0
.
Special case of zeta_eq_tsum_one_div_nat_cpow
when the argument is in ℕ
, so the power
function can be expressed using naïve pow
rather than cpow
.
Explicit formula for ζ (2 * k)
, for k ∈ ℕ
with k ≠ 0
: we have
ζ (2 * k) = (-1) ^ (k + 1) * 2 ^ (2 * k - 1) * π ^ (2 * k) * bernoulli (2 * k) / (2 * k)!
.
Compare has_sum_zeta_nat
for a version formulated explicitly as a sum, and
riemann_zeta_neg_nat_eq_bernoulli
for values at negative integers (equivalent to the above via
the functional equation).
Functional equation #
Riemann zeta functional equation, formulated for Λ₀
: for any complex s
we have
Λ₀(1 - s) = Λ₀ s
.
Riemann zeta functional equation, formulated for Λ
: for any complex s
we have
Λ (1 - s) = Λ s
.