you might try the following. Pochhammer_n <- function (a,b,c,n) { if(n==0) return(1) return(a*b*Pochhammer_n(a+1, b+1, c+1, n-1)/(c*n)) }
hypergeo_sum <- function (a,b,c,z,n) { comb_sum <- 0 for (i in 0:n) { comb_sum <- comb_sum + Pochhammer_n(a,b,c,i)*z^i } return(comb_sum) } hypergeo_sum2 <- function (a,b,c,z,n) { comb <- rep(1,n+1) for (i in 2:(n+1)){ comb[i] <- comb[i-1]*(a+i-2)*(b+i-2)*z/((i-1)*(c+i-2)) } return(sum(comb)) } system.time(hypergeo_sum (1.25,1.75,1.25,0.5,300)) system.time(hypergeo_sum2(1.25,1.75,1.25,0.5,300)) On Dec 10, 4:28 pm, Roslina Zakaria <zrosl...@yahoo.com> wrote: > Hi, > > I would like to write a function for this formula: > F(a,b,c,z)=1+(ab)/(1!c)+ +(a(a+1)b(b+1))/(2!c(c+1))+ > +(a(a+1)(a+2)b(b+1)(b+2))/(3!c(c+1)(c+2))+… > > I wrote this function but not sure what is not right: > > hypergeo_sum <- function (a,b,c,z,n) > { for (i in 1:n) > { aa <- 1+(a*b*z)/c > aa[i] <- (aa-1)*(a+i)*(b+i)*z/((i+1)*(c+i)) > comb_sum <- aa + aa[i]+ aa[i+2] > } > comb_sum} > > > hypergeo_sum (1.25,1.75,1.25,0.5,3) > > output:> hypergeo_sum (1.25,1.75,1.25,0.5,3) > > [1] 2.394531 NA 1.039062 > > > The answer should be 2.852539. > > Or can you suggest any R book that I can refer to. Thank you so much for your > help. > > ______________________________________________ > r-h...@r-project.org mailing listhttps://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guidehttp://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@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.