巴塞尔问题:计算所有平方数的导数和
∑ n = 1 ∞ 1 n 2 = lim n → + ∞ ( 1 1 2 + 1 2 2 + ⋯ + 1 n 2 ) \sum_{n=1}^{\infty} \frac{1}{n^{2}}=\lim _{n \rightarrow+\infty}\left(\frac{1}{1^{2}}+\frac{1}{2^{2}}+\cdots+\frac{1}{n^{2}}\right) n=1∑∞n21=n→+∞lim(121+221+⋯+n21)
其理论解为 1 / 6 π 2 1/6\pi^2 1/6π2
网络上有很多关于理论解的证明,此处不在赘述。下面介绍数值逼近的方法(也可以用此方法来求 π \pi π)
如果直接使用定义,通过matlab计算我们可以知道,前1e6次项,误差也有1e-6,误差还是比较大的。
n = 1e6;
num = 1:n;
a = sum(1./(num.^2))
err = zeta(2)-a
使用下面的加速算法,
ζ
(
2
)
∼
∑
k
=
1
n
1
k
2
+
1
n
−
1
2
n
2
+
1
6
n
3
−
1
30
n
5
+
1
42
n
7
−
1
30
n
9
\zeta(2) \sim \sum_{k=1}^{n} \frac{1}{k^{2}}+\frac{1}{n}-\frac{1}{2 n^{2}}+\frac{1}{6 n^{3}}-\frac{1}{30 n^{5}}+\frac{1}{42 n^{7}}-\frac{1}{30 n^{9}}
ζ(2)∼k=1∑nk21+n1−2n21+6n31−30n51+42n71−30n91
n = 1e6;
num = 1:n;
a = sum(1./(num.^2))+1/n-1/(2*n^2)+1/(6*n^3)-1/(30*n^5)+1/(42*n^7)-1/(30*n^9);
err = zeta(2)-a
前1e6次项,误差达到了1e-16,结果让人满意。
上面的那个加速算法,是通过 Euler–Maclaurin 公式得到的。但是我自己也没有算明白,有兴趣的读者可以自己搜着看一下。
2023年2月28日19点36分