计算常数的公式。按照主观理解难度从易到难排序。
关于 Binary Splitting 请左转喵喵喵 V。
\(\sqrt{k}\)
迭代 \(x\leftarrow \frac12(x+\frac kx)\)。每次精度翻倍。
例:\(k=2,x_0=1\)。下方用黑色字表示第一个不正确的位数。
从 \(x_0\) 到 \(x_7\),正确的有效数位分别为 \(1,2,3,6,12,25,49,98\)。
只需在对应步数时使用对应精度的小数即可。设一个变量 \(prec=0\),\(x_0\) 时 \(prec=1\),每次迭代 \(prec\leftarrow 2prec+\frac12\log2\),计算时取 \(\lceil prec\rceil\) 位计算。
\(e,\sin1,\cos1\)
Taylor 级数展开。
前 \(k\) 项的误差项是 \(O(\frac1{k!})\sim(10^{-k\log k})\)。
\(\sin(1),\cos(1)\) 同理。
\(\ln\)
我们都知道 \(\coth^{-1}(x)\) 的 Taylor 级数是
并且他还等于
于是如果我们可以取到一些 \(x\) 让他们的线性组合得到特殊 \(\ln\) 的值就可以通过计算这些 \(\coth^{-1}\) 来计算 \(\ln\) 了。
例:\(\ln2,\ln3,\ln5,\ln7\) 同时计算。\(n=251,449,4801,8749\) 均满足 \(n^2-1\) 的素因子只有 \(2,3,5,7\)。
ln(2) = 144*arccoth(251) + 54*arccoth(449) - 38*arccoth(4801) + 62*arccoth(8749)
ln(3) = 228*arccoth(251) + 86*arccoth(449) - 60*arccoth(4801) + 98*arccoth(8749)
ln(5) = 334*arccoth(251) + 126*arccoth(449) - 88*arccoth(4801) + 144*arccoth(8749)
ln(7) = 404*arccoth(251) + 152*arccoth(449) - 106*arccoth(4801) + 174*arccoth(8749)
\(\pi\)
可以先看这里。
前置阅读:喵喵喵 XI
对于所有的 \(h(d)=1\),都有正整数 \(A,B\) 和整数 \(C=-\sqrt[3]{j(\frac{1+\sqrt{d}}2)}\),满足:
\(d=-163\) 的情况就是经典的 Chudnovsky 公式。具体数据见下表:
| \(d\) | \(A\) | \(B\) | \(C\) |
|---|---|---|---|
| \(-163\) | \(3344418\) | \(13591409\) | \(640320\) |
| \(-67\) | \(3906\) | \(10177\) | \(5280\) |
| \(-43\) | \(378\) | \(789\) | \(960\) |
| \(-19\) | \(18\) | \(25\) | \(96\) |
剩下的 \(d\) 不适合进行计算,因为他们收敛太慢。
\(h(d)=2\) 的情况里面比较著名的有 Ramanujan 公式(\(d=-232\)):
\(\zeta(3)\)
编者至今(Dec 13, 2025)没有理解如何生成 \(\zeta(3)\) 的公式。读者可以自行搜索“Wilf-Zeilberger 对”来找到相关资料。
但我们知道 \(\frac{\zeta(2n)}{\pi^{2n}}\in\mathbb Q\) 对全体正整数 \(n\) 成立。
浙公网安备 33010602011771号