Last chance! 50% off unlimited learning
Sale ends in
Computes Riemann's zeta function and its first two derivatives. Also can compute the Hurwitz zeta function.
zeta(x, deriv = 0, shift = 1)
A complex-valued vector/matrix whose real values must be
x
may be real.
It is called deriv
is 1 or 2 then x
must be real and positive.
An integer equalling 0 or 1 or 2, which is the order of the derivative. The default means it is computed ordinarily.
Positive and numeric, called
The default is a vector/matrix of computed values of Riemann's zeta
function.
If shift
contains values not equal to 1, then this is
Hurwitz's zeta function.
This function has not been fully tested, especially the derivatives.
In particular, analytic continuation does not work here for
complex x
with Re(x)<1
because currently the
gamma
function does not handle complex
arguments.
The (Riemann) formula for real
The (Riemann) formula used here for analytic continuation is
The Hurwitz zeta function for real shift
.
Since
Riemann, B. (1859). Ueber die Anzahl der Primzahlen unter einer gegebenen Grosse. Monatsberichte der Berliner Akademie, November 1859.
Edwards, H. M. (1974). Riemann's Zeta Function. Academic Press: New York.
Markman, B. (1965). The Riemann zeta function. BIT, 5, 138--141.
Abramowitz, M. and Stegun, I. A. (1972). Handbook of Mathematical Functions with Formulas, Graphs, and Mathematical Tables, New York: Dover Publications Inc.
# NOT RUN {
zeta(2:10)
# }
# NOT RUN {
curve(zeta, -13, 0.8, xlim = c(-12, 10), ylim = c(-1, 4), col = "orange",
las = 1, main = expression({zeta}(x)))
curve(zeta, 1.2, 12, add = TRUE, col = "orange")
abline(v = 0, h = c(0, 1), lty = "dashed", col = "gray")
curve(zeta, -14, -0.4, col = "orange", main = expression({zeta}(x)))
abline(v = 0, h = 0, lty = "dashed", col = "gray") # Close up plot
x <- seq(0.04, 0.8, len = 100) # Plot of the first derivative
plot(x, zeta(x, deriv = 1), type = "l", las = 1, col = "blue",
xlim = c(0.04, 3), ylim = c(-6, 0), main = "zeta'(x)")
x <- seq(1.2, 3, len = 100)
lines(x, zeta(x, deriv = 1), col = "blue")
abline(v = 0, h = 0, lty = "dashed", col = "gray")
# }
# NOT RUN {
zeta(2) - pi^2 / 6 # Should be 0
zeta(4) - pi^4 / 90 # Should be 0
zeta(6) - pi^6 / 945 # Should be 0
zeta(8) - pi^8 / 9450 # Should be 0
zeta(0, deriv = 1) + 0.5 * log(2*pi) # Should be 0
gamma0 <- 0.5772156649
gamma1 <- -0.07281584548
zeta(0, deriv = 2) -
gamma1 + 0.5 * (log(2*pi))^2 + pi^2/24 - gamma0^2 / 2 # Should be 0
zeta(0.5, deriv = 1) + 3.92264613 # Should be 0
zeta(2.0, deriv = 1) + 0.93754825431 # Should be 0
# }
Run the code above in your browser using DataLab