0

我目前正在阅读 Nakov 的《C# 计算机编程基础》一书。在第 4 章问题 12 中指出:

编写一个程序,计算以下序列的总和(精度为 0.001):1 + 1/2 - 1/3 + 1/4 - 1/5 + …

在我看来,这是一个相对简单的问题。该系列是没有渐近线的递减分数。由于值变化减小而在某个点停止循环符合 AFAIC 的精度要求。然而,这本书的匈牙利语和英语版本中给出的解决方案都提到了一个(对我来说)晦涩难懂的值 1.307。如下:

在一个while循环内的一个变量中累积序列的总和(参见“循环”一章)。在每一步都将旧总和与新总和进行比较。如果两个和 Math.Abs​​(current_sum – old_sum) 之间的差值小于所需的精度 (0.001),则计算应该完成,因为差值在不断减小并且精度在循环的每一步都在不断增加。预期结果为 1.307。

有人可以解释这可能意味着什么吗?

4

3 回答 3

1

请注意,标题包含没有限制的“谐波序列”。

但是问题主体显示了向值收敛的交替符号序列2 - ln(2)

于 2018-07-16T05:57:38.213 回答
0

预期结果为 1.307。

我认为他们只是在说计算的结果是什么,所以你可以检查你的答案。

于 2018-07-16T05:54:36.980 回答
0

你得到的序列

1 + 1/2 - 1/3 + 1/4 + ...

与维基百科上的交替谐波系列相同,除了从 1/2 开始的符号翻转:

1 - 1/2 + 1/3 - 1/4 + ... = ln 2

和 2 的自然对数 ln 2 = 0.693。因此,这里的 1.307 = 2 - ln 2。

于 2018-07-16T05:57:45.690 回答