[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