我需要编写一个斯特林第二类数的函数,它的公式如下:
为此,我在R中编写了以下函数:
stirling <- function(n, k)
{
sum = 0
for (i in 0:k)
{
sum = sum + (-1)^(k - i) * choose(k, i) * i^n
}
sum = sum / factorial(k)
return(sum)
}
下一步问题是“为n = 20,k = 1,2,…,10创建一个图形”。我做了一些研究,认为方法
curve
或plot
可能对我有帮助。但是,我猜测这些方法是在y
以f(x)
的形式(即单个参数)时使用的。但是,在这里,我的函数stirling
有两个参数(n
和k
),所以我不确定如何处理它。此外,我尝试将
k
的值(0,1,2 ..., 10)转换为向量,然后将其传递给stirling
,但是stirling
不会接受向量作为输入。我不确定如何修改代码来使stirling
接受向量。有什么建议吗?
plot(1:10, Vectorize(stirling)(20, 1:10))
。 - MrFlickapply()
是适用的。例如,df <- expand.grid(n = 18:22, k = 1:10); res <- apply(df, 1, function(x) stirling(x[1], x[2])); df <- cbind(df, res)
。 - cuttlefish44