235.算术几何数列(An Arithmetic Geometric Sequence)
给定算术-几何数列 \(u(k) = (900-3k)r^{k - 1}\)。令 \(s(n) = \sum_{k = 1}^n u(k)\)。求使得 \(s(5000) = -600\,000\,000\,000\) 的 \(r\) 值。请将答案四舍五入至小数点后 12 位。
分析:我们给出通项:
$$u(k) = (900 - 3k)r^{k-1}$$
我们想要找到这个级数的求和公式:
$$S(n) = \sum_{k=1}^{n} u(k) = \sum_{k=1}^{n} (900 - 3k)r^{k-1}$$
为了找到求和公式,我们可以应用对 \(r\) 求导的技巧。首先,让我们将级数重写为几何级数的形式:
$$S(n) = 900\sum_{k=1}^{n} r^{k-1} - 3\sum_{k=1}^{n} kr^{k-1}$$
现在我们有两个几何级数。我们知道几何级数的求和公式是:
$$\sum_{k=1}^{n} r^{k-1} = \frac{1 - r^n}{1 - r}$$
让我们对几何级数关于 \(r\) 求导:
$$\frac{d}{dr}\sum_{k=1}^{n} r^{k-1} = \sum_{k=1}^{n} \frac{d}{dr} r^{k-1} = \sum_{k=1}^{n} (k-1)r^{k-2}$$
现在,我们可以找到第二个级数的求和公式:
$$\sum_{k=1}^{n} kr^{k-1} = r\sum_{k=1}^{n} (k-1)r^{k-2} = r\frac{d}{dr}\sum_{k=1}^{n} r^{k-1}$$
对几何级数公式求导:
$$r\frac{d}{dr}\left(\frac{1 - r^n}{1 - r}\right) = \frac{nr^{n+1} - (n+1)r^n + 1}{(1-r)^2}$$
现在将公式代回 \(S(n)\):
$$S(n) = 900 \left(\frac{1 - r^n}{1 - r}\right) - 3\left(\frac{nr^{n+1} - (n+1)r^n + 1}{(1-r)^2}\right)$$
这是给定级数的求和公式。
已知 \(s(5000) = -600\,000\,000\,000\)。代入值:
$$-600\,000\,000\,000 = 900 \left(\frac{1 - r^{5000}}{1 - r}\right) - 3\left(\frac{5000r^{5001} - 5001r^{5000} + 1}{(1-r)^2}\right)$$
为了求解 \(r\) 的值,我们可以使用数值方法,如二分法或牛顿法。在这种情况下,我们将使用 scipy 库中的 scipy.optimize.root_scalar 函数,这是一种稳健的根查找方法。
下面是查找 \(r\) 值的 Python 代码:
import numpy as np
from scipy.optimize import root_scalar
def s(n, r):
return 900 * (1 - r**n) / (1 - r) - 3 * (n * r**(n + 1) - (n + 1) * r**n + 1) / (1 - r)**2
def equation(r):
return s(5000, r) + 600_000_000_000
a, b = 0.1, 1.1
result = root_scalar(equation, method='brentq', bracket=[a, b])
r_value = result.root
print(f"r: {r_value:.12f}")
此代码将找到 \(r\) 的值并将其四舍五入至小数点后 12 位打印出来。