[R] recursive term
andrew
andrewjohnroyal at gmail.com
Thu Dec 11 23:30:27 CET 2008
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... at 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... at 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.
More information about the R-help
mailing list