求 1/1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 - 1/8 + ... 1/100的值

本文介绍了使用for循环和while循环解决数学级数求和问题的方法。通过详细步骤解析,展示了如何灵活运用这两种循环结构来计算序列的前n项和,特别强调了变量类型的选择对精度的影响。

使用两种方法对此题求解:

人之所以痛苦,那是因为在成长。 -------magic_guo

for 循环方法和while循环方法:
话不多说,直接上代码:
for循环方法:
在这里插入图片描述
while循环方法:
在这里插入图片描述
题解分析:
① 第一项的分子分母都是1
② 第二项的分母是2,以后每一项的分母都是前一项的分母加1
③ 第二项前的运算符为负,后一项的运算符都与前一项的运算符相反

思路:
S1:sign = -1 代表每一项的符号
S2:sum = 0 代表总和
S3:deno = 1 代表当前项的分母
S4:sign = (-1) * (sign) 每一项的符号都会变
S5:term = sign * (1.0/deno) 代表当前项的值
注意:定义term 和 sum 时,要定义为浮点型,无论float或者double都行。
S6:sum = sum + term 计算全部的值
S7:deno = deno + 1 每一次都要将deno(分母)加1
S8:若deno <= 100,返回S4,否则算法结束。

虽说此题为都100的和,大家可以灵活运用,求n项的和,只用将100改为n即可。

你给出的表达式是: ``` 1 - 1/2 + 2/3 - 3/5 + 4/8 - 5/13 + ... ``` 我们来**分析这个数列的规律**,然后写出通项公式、Python代码,并计算其前几项和。 --- ### 🔍 第一步:观察数列结构 写出每一项的分子和分母: | 项数 | 符号 | 分子 | 分母 | | |------|------|------|------|-----------| | 1 | + | 1 | ? | 1 | | 2 | - | 1 | 2 | 1/2 | | 3 | + | 2 | 3 | 2/3 | | 4 | - | 3 | 5 | 3/5 | | 5 | + | 4 | 8 | 4/8 | | 6 | - | 5 | 13 | 5/13 | #### 观察分子: - 分子序列:`1, 1, 2, 3, 4, 5` -1项特殊(直接为1- 从第2项开始:分子 = `i - 1`? - i=21 ✔️ - i=32 ✔️ - i=65 ✔️ ✅ 所以第 $ i $ 项的分子是: $$ \text{numerator} = \begin{cases} 1 & i=1 \\ i-1 & i \geq 2 \end{cases} $$ 或者统一地:从第1项看作 `i=1` 时分子为 `1`,可以认为就是 `i` 的某种偏移。 但更自然的方式是重新编号:令第 $ k $ 项(从 $ k=1 $ 开始)的分子为 $ k $ 等一下!注意: | 项序 k | 分子 | 分母 | |--------|------|------| | 1 | 1 | 1? | ← 第一项是 `1`,可视为 `1/1` 吗? 等等,第一项是 `1`,但没有写成分母。我们再仔细看原式: > `1 - 1/2 + 2/3 - 3/5 + 4/8 - 5/13 + ...` 如果我们把第一项 `1` 看成 `1/1`,那么整个序列变成: ``` +1/1 - 1/2 + 2/3 - 3/5 + 4/8 - 5/13 ``` 现在重新整理: | k | 符号 | 分子 | 分母 | |--|------|-------|-------| |1| + | 1 | 1 | |2| - | 1 | 2 | |3| + | 2 | 3 | |4| - | 3 | 5 | |5| + | 4 | 8 | |6| - | 5 | 13 | 现在发现: #### ✅ 分子规律: - 分子 = $ k - 1 $,除了第一个? - 不对,k=1: 分子=1 - k=2: 1 - k=3: 2 - k=4: 3 - k=5: 4 - k=6: 5 → 实际上:**分子 = $ k == 1 ? 1 : k - 1 $** 或者换个方式:从第二项起,分子 = $ k - 1 $ 但我们注意到一个更清晰的模式: 👉 **分子序列:1, 1, 2, 3, 4, 5 → 从第3项开始递增** 其实更合理的是:**分子 = 第 k 项对应的斐波那契索引?不,不是。** 再看分母! --- ### 🧠 关键突破:分母序列 分母:`1(隐含), 2, 3, 5, 8, 13` 这正是著名的 **斐波那契数列(Fibonacci)!** 斐波那契定义: $$ F_1 = 1,\ F_2 = 1,\ F_3 = 2,\ F_4 = 3,\ F_5 = 5,\ F_6 = 8,\ F_7 = 13,\ F_8 = 21,\dots $$ 但我们这里的分母是: - k=1: 1 → 可能是 $ F_2 $ - k=2: 2 → $ F_3 $ - k=3: 3 → $ F_4 $ - k=4: 5 → $ F_5 $ - k=5: 8 → $ F_6 $ - k=6: 13 → $ F_7 $ 所以:**第 k 项的分母 = $ F_{k+1} $** 其中 Fibonacci 定义为: - $ F_1 = 1 $ - $ F_2 = 1 $ - $ F_n = F_{n-1} + F_{n-2} $ 验证: - k=1 → $ F_2 = 1 $ ✔️ - k=2 → $ F_3 = 2 $ ✔️ - k=3 → $ F_4 = 3 $ ✔️ - k=4 → $ F_5 = 5 $ ✔️ - ... ✅ 成立! --- ### 分子呢? 分子序列: - k=11 - k=21 - k=32 - k=43 - k=54 - k=65 → 看起来像:**分子 = $ \max(1, k - 1) $** 即: - k=11 - k≥2 → k-1 也可以理解为:分子是 `k==1 ? 1 : k-1` 但这似乎和 Fibonacci 没有直接关系。 不过我们注意到: > 这个级数可能是: > > $$ > \sum_{k=1}^{\infty} (-1)^{k+1} \cdot \frac{a_k}{F_{k+1}} > $$ > > 其中 $ a_k = \begin{cases} 1 & k=1 \\ k-1 & k \geq 2 \end{cases} $ 但有没有更优雅的解释? 另一种可能:这不是标准数学常数级数,而是人为构造的练习题。 --- ### ✅ 综合规律总结: 设第 $ k $ 项($ k \geq 1 $)为: $$ T_k = (-1)^{k+1} \cdot \frac{n_k}{d_k} $$ 其中: - $ n_k = \begin{cases} 1 & k=1 \\ k-1 & k \geq 2 \end{cases} $ - $ d_k = F_{k+1} $,即第 $ k+1 $ 个斐波那契数 - 符号交替:正负正负... 例如: - $ T_1 = + \frac{1}{F_2} = + \frac{1}{1} = 1 $ - $ T_2 = - \frac{1}{F_3} = - \frac{1}{2} $ - $ T_3 = + \frac{2}{F_4} = + \frac{2}{3} $ - $ T_4 = - \frac{3}{F_5} = - \frac{3}{5} $ - ... --- ### ✅ Python 代码实现:计算前 n 项和 ```python def compute_series(n): if n <= 0: return "error" # 生成前 n+1 个斐波那契数(需要 F_2 到 F_{n+1}) fib = [0] * (n + 2) fib[1] = 1 fib[2] = 1 for i in range(3, n + 2): fib[i] = fib[i-1] + fib[i-2] result = 0.0 for k in range(1, n + 1): numerator = 1 if k == 1 else k - 1 denominator = fib[k + 1] # F_{k+1} term = numerator / denominator if k % 2 == 1: # 奇数项为正 result += term else: # 偶数项为负 result -= term return f"{result:.6f}" # 输入并运行 n = int(input()) print(compute_series(n)) ``` --- ### 📌 示例测试 #### 输入: ``` 6 ``` 对应计算: ``` 1 - 1/2 + 2/3 - 3/5 + 4/8 - 5/13 = 1 - 0.5 + 0.666667 - 0.6 + 0.5 - 0.384615 ≈ 0.682052 ``` 输出: ``` 0.682052 ``` 你可以用下面简化版代码快速验证: ```python n = int(input()) # 构造斐波那契数列 F[1] ~ F[n+1] F = [0] * (n + 2) F[1], F[2] = 1, 1 for i in range(3, n + 2): F[i] = F[i-1] + F[i-2] total = 0.0 for k in range(1, n + 1): num = 1 if k == 1 else k - 1 den = F[k + 1] term = num / den total += term if k % 2 == 1 else -term print(f"{total:.6f}") ``` --- ### ❗ 注意事项 - 第一项 `1` 被解释为 `1/1`,分母是 $ F_2 = 1 $ - 分子规则特殊:只有第一项是 `1`,之后是 `k-1` - 如果题目后续还有规律(比如分子也与 Fibonacci 相关),需进一步确认 - 当前看来这是一个自定义构造的交错分数级数,非标准数学级数 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值