Dear UseRs, I'm curious about the derivative of n!. We know that Gamma(n+1)=n! So when on takes the derivative of Gamma(n+1) we get Int(ln(x)*exp(-x)*x^n,x=0..Inf). I've tried code like> integrand<-function(x) {log(x)*exp(x)*x^n} > integrate(integrand,lower=0,upper=Inf)It seems that R doesn't like to integrate for any n, and I was wondering if anyone knew a way around this? -Max
On Fri, 7 Mar 2008, Max wrote:> Dear UseRs, > > I'm curious about the derivative of n!. > > We know that Gamma(n+1)=n! So when on takes the derivative of > Gamma(n+1) we get Int(ln(x)*exp(-x)*x^n,x=0..Inf). > > I've tried code like > >> integrand<-function(x) {log(x)*exp(x)*x^n} >> integrate(integrand,lower=0,upper=Inf) > > It seems that R doesn't like to integrate for any n, and I was > wondering if anyone knew a way around this?ln(x) e^x x^n is not integrable on (0, Inf). You presumably slipped over a minus sign, but your definition of gamma(n) is wrong -- see ?gamma. integrate(function(x) exp(-x)*x^n, lower=0, upper=Inf) will work for gamma(n+1). -- Brian D. Ripley, ripley at stats.ox.ac.uk Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/ University of Oxford, Tel: +44 1865 272861 (self) 1 South Parks Road, +44 1865 272866 (PA) Oxford OX1 3TG, UK Fax: +44 1865 272595
Hi Max, The analytic integral \int _0 ^\Inf exp(-t) t^n log(t) might not converge because the integrand tends to -Inf as t -> 0. So, here is a numerical approach to estimating the derivative of the gamma function: library(numDeriv) fx <- function(x, n) exp(-x) * x^n gf <- function(n) {integrate(fx, lower=0, upper=Inf, n=n)$val}> grad(x=3, func=gf)[1] 7.536706> > grad(x=10, func=gf)[1] 8534040>Best, Ravi. ---------------------------------------------------------------------------- ------- Ravi Varadhan, Ph.D. Assistant Professor, The Center on Aging and Health Division of Geriatric Medicine and Gerontology Johns Hopkins University Ph: (410) 502-2619 Fax: (410) 614-9625 Email: rvaradhan at jhmi.edu Webpage: http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html ---------------------------------------------------------------------------- -------- -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Max Sent: Friday, March 07, 2008 1:41 PM To: r-help at stat.math.ethz.ch Subject: [R] Numerical Integration in 1D Dear UseRs, I'm curious about the derivative of n!. We know that Gamma(n+1)=n! So when on takes the derivative of Gamma(n+1) we get Int(ln(x)*exp(-x)*x^n,x=0..Inf). I've tried code like> integrand<-function(x) {log(x)*exp(x)*x^n} > integrate(integrand,lower=0,upper=Inf)It seems that R doesn't like to integrate for any n, and I was wondering if anyone knew a way around this? -Max ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Hi max, Prof. Ripley is right. Your problem is that you missed a (-) sign in the exponential. Here is a demonstration showing the agreement between numerical and analytical results: gx <- function(x, n) exp(-x) * x^n * log(x) df <- function(n) {integrate(gx, lower=0, upper=Inf, n=n)$val} library(numDeriv) fx <- function(x, n) exp(-x) * x^n gf <- function(n) {integrate(fx, lower=0, upper=Inf, n=n)$val}> grad(x=6, func=gf)[1] 1348.405> > df(6)[1] 1348.405>Ravi. ---------------------------------------------------------------------------- ------- Ravi Varadhan, Ph.D. Assistant Professor, The Center on Aging and Health Division of Geriatric Medicine and Gerontology Johns Hopkins University Ph: (410) 502-2619 Fax: (410) 614-9625 Email: rvaradhan at jhmi.edu Webpage: http://www.jhsph.edu/agingandhealth/People/Faculty/Varadhan.html ---------------------------------------------------------------------------- -------- -----Original Message----- From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of Max Sent: Friday, March 07, 2008 1:41 PM To: r-help at stat.math.ethz.ch Subject: [R] Numerical Integration in 1D Dear UseRs, I'm curious about the derivative of n!. We know that Gamma(n+1)=n! So when on takes the derivative of Gamma(n+1) we get Int(ln(x)*exp(-x)*x^n,x=0..Inf). I've tried code like> integrand<-function(x) {log(x)*exp(x)*x^n} > integrate(integrand,lower=0,upper=Inf)It seems that R doesn't like to integrate for any n, and I was wondering if anyone knew a way around this? -Max ______________________________________________ R-help at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.
Maybe Matching Threads
- Regularized gamma function/ incomplete gamma function
- Integrate a 1-variable function with 1 parameter (Jose L. Romero)
- Problem with Numerical derivatives (numDeriv) and mvtnorm
- The gradient of a multivariate normal density with respect to its parameters
- Vorticity and Divergence