使用R语言实现1/2−2/3+…+999/1000求和:seq参数疑问
R语言实现1/2−2/3+3/4−4/5+⋯+999/1000的求和
先解决你代码里的终止参数问题
原序列最后一项是**+999/1000**,拆分正负项来看:
- 正项是
1/2, 3/4, 5/6, ..., 999/1000:- 分子序列
b1是1、3…999,用seq(1, 999, 2)生成(原代码写seq(1,1000,2)也能得到正确结果,因为步长2,1000是偶数,最后一项自动停在999,但写999更直观) - 分母序列
b2是2、4…1000,原代码seq(2,1000,2)是对的
- 分子序列
- 负项是
2/3, 4/5, 6/7, ..., 998/999:- 分子序列
b3是2、4…998,所以终止参数填998,即seq(2, 998, 2) - 分母序列
b4是3、5…999,终止参数填999,即seq(3, 999, 2)
- 分子序列
按你的思路完成求和的代码:
b1 <- seq(1, 999, 2) b2 <- seq(2, 1000, 2) positive_terms <- b1 / b2 b3 <- seq(2, 998, 2) b4 <- seq(3, 999, 2) negative_terms <- b3 / b4 total_sum <- sum(positive_terms) - sum(negative_terms)
更简洁的写法
不用拆分正负项,直接给每一项加上对应符号:
# 生成1到999的分子,2到1000的分母 numerator <- 1:999 denominator <- 2:1000 # 符号序列:第1项+,第2项-,…,第999项+(因为999是奇数) signs <- (-1)^(numerator + 1) # 求和 total_sum <- sum(signs * numerator / denominator)
甚至可以一行搞定:
total_sum <- sum((-1)^(1:999 + 1) * (1:999)/(2:1000))
内容的提问来源于stack exchange,提问作者jhonny
相关产品推荐
相关产品推荐

