R-序列的每隔一个数为负数

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

我尝试生成一系列向量,用以下公式计算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.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