Skip to content

recursive term

2 messages · Roslina Zakaria, Andrew

#
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:
[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.
1 day later
#
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: