我正在研究 R 中的二项展开式,我遇到了一些问题,我觉得这些值没有意义。这是我的代码,我从“从头开始”使用阶乘和组合来计算。我尝试了 x=6、y=2 和 n=4 我得到 2784 作为答案。如果我尝试 1,它会给出 0。如果 n=i,我会得到无穷大,因为分母等于零
fact=1
for(i in 1:n){
fact=fact*i
}
return(fact)
}
Combi<-function(n,r){
result=f(n)/(f(r)*f(n-r))
return(result)
}
Combi(6,4)
expand.binomial<-function(x,y,n){
sumz=0
for(i in 1:n){
if(i==n){
break
}
sumz=sumz+Combi(n,i)*(x**i)*(y**(n-i))
}
return(sumz)
}
最佳答案
您应该知道,0!
是 1
。在这种情况下,f
应如下定义
f <- function(n) {
if (n == 0) {
return(1)
}
fact <- 1
for (i in 1:n) {
fact <- fact * i
}
return(fact)
}
此外,在 expand.binomial
中,指数应从 0
开始到 n
,即
expand.binomial <- function(x, y, n) {
sumz <- 0
for (i in 0:n) {
sumz <- sumz + Combi(n, i) * (x**i) * (y**(n - i))
}
return(sumz)
}
测试
> expand.binomial(6, 2, 4)
[1] 4096
> expand.binomial(6, 2, 1)
[1] 8
> expand.binomial(6, 2, 0)
[1] 1
关于r - 在 R 中进行二项式展开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67659442/