R-序列的每隔一个数为负数
我尝试生成一系列向量,用以下公式计算Pi的近似值: Pi=4(1-(1/3)+(1/5)-(1/7)。。。 七个任期。 我为分母值做了一个序列R-序列的每隔一个数为负数,r,vector,pi,R,Vector,Pi,我尝试生成一系列向量,用以下公式计算Pi的近似值: Pi=4(1-(1/3)+(1/5)-(1/7)。。。 七个任期。 我为分母值做了一个序列 number.terms3c <-7 seq.vec3c <- seq(from = 1, by = 2 , length.out = number.terms3c) number.terms3c您可以使用rep创建要乘以的值 > recip.vec3c * rep(c(1,-1), length.out = number.terms
number.terms3c <-7
seq.vec3c <- seq(from = 1, by = 2 , length.out = number.terms3c)
number.terms3c您可以使用rep
创建要乘以的值
> recip.vec3c * rep(c(1,-1), length.out = number.terms3c)
[1] 1.00000000 -0.33333333 0.20000000 -0.14285714 0.11111111 -0.09090909
[7] 0.07692308
话虽如此,我只是用它来避免警告。如果你不特别关心这个问题,你可以用R所做的向量循环,快速而松散地乘以c(1,-1)
您可以使用rep
创建要乘以的值
> recip.vec3c * rep(c(1,-1), length.out = number.terms3c)
[1] 1.00000000 -0.33333333 0.20000000 -0.14285714 0.11111111 -0.09090909
[7] 0.07692308
话虽如此,我只是用它来避免警告。如果你不特别关心这个问题,你可以用R所做的向量循环,快速而松散地乘以c(1,-1)
记住,你可以用1:n
在R中生成一个n
数字序列,你可以通过x%%2
得到任意数模2。因此1:n%%2
给出了一个1 01 01 0
的重复序列。因此,将其乘以2,减去1,就得到了重复序列1-1-1-1…
>。因此,您可以使用(2*(1:n%%2)-1)
作为您的分子
类似地,分母只是一个奇数序列,由1:n*2-1
这意味着您可以编写一个简单的算术函数,对展开式的前n项求和,如下所示:
pi_fracts <- function(n) sum(4*(2*(1:n %% 2) - 1)/(1:n * 2 - 1))
甚至
pi_fracts(1000000)
#> [1] 3.141592
记住,你可以用1:n
在R中生成一个n
数字序列,你可以通过x%%2
得到任意数模2。因此1:n%%2
给出了一个1 01 01 0
的重复序列。因此,将其乘以2,减去1,就得到了重复序列1-1-1-1…
>。因此,您可以使用(2*(1:n%%2)-1)
作为您的分子
类似地,分母只是一个奇数序列,由1:n*2-1
这意味着您可以编写一个简单的算术函数,对展开式的前n项求和,如下所示:
pi_fracts <- function(n) sum(4*(2*(1:n %% 2) - 1)/(1:n * 2 - 1))
甚至
pi_fracts(1000000)
#> [1] 3.141592