我正在尝试编写一个带有正实数的函数,并继续添加谐波系列的项,直到总和超过初始参数.
我需要我的函数来显示已添加的系列的术语总数.
到目前为止,这是我的代码:
harmonic<-function(n){
x<-c(0,1)
while (length(x) < n) {
position <- length(x)
new <- 1/(x[position] + x[position-1])
x <- c(x,new)
}
return(x)
}
我为我的代码中的错误道歉,不幸的是我一直在使用R只有一个月,这是我第一次使用while循环,我找不到任何有用的信息.
谢谢,我真的很感谢你的帮助.
最佳答案 这是基于maths.stackexchange:
https://math.stackexchange.com/q/496116上这篇文章的一些信息的尝试
我无法谈论它是否在所有情况下都是高度准确的,甚至是最佳或适当的方式来解决这个问题.买者自负.
harmsum.cnt <- function(x,tol=1e-09) {
em.cons <- 0.577215664901533
difffun <- function(x,n) x - (log(n) + em.cons + 1/(2*n) - 1/(12*n^2))
ceiling(uniroot(difffun, c(1, 1e10), tol = tol, x = x)$root)
}
似乎工作正常但是:
harmsum.cnt(7)
#[1] 616
harmsum.cnt(15)
#[1] 1835421
相比:
tail(cumsum(1/1:616),1); tail(cumsum(1/1:615),1)
#7.001274
#6.999651
dput(tail(cumsum(1/1:1835421),1)); dput(tail(cumsum(1/1:1835420),1))
#15.0000003782678
#14.9999998334336