求根号二的 N 种方法
Yuanhao_09f
·
·
学习·文化课
关于 \sqrt2 的 114514 种求法
我只是一只小升初的蒟蒻,有不对的地方勿喷。
牛顿迭代法
牛顿迭代法适用于解 f(x)=0 形式的方程,每一次迭代可以让目标的误差位数 \times2。它的具体操作是这样的:
设一个近似初值 x_0;
- 设 x_1=x_0-\frac{f(x_0)}{f'(x_0)};
- 如果 x_1 满足精度要求,则返回 x \approx x_1;
- 让 x_0=x_1;
- 回到 1.,继续执行。
如何用牛顿迭代法求 \sqrt2 呢?
设 f(x)=x^2-2,则 f'(x)=2x。\
设 x_0=2,重复执行以下操作,直到达到精度要求:
- 设 x_1=x_0-\frac{f(x_0)}{f'(x_0)}=x_0-\frac{x_0^2-2}{2x_0}=\frac{x_0^2+2}{2x_0}=\frac{1}{2}(x_0+\frac{2}{x_0});
- 让 x_0=x_1。
返回 \sqrt2 \approx x_1。
奇葩算法一
本算法与牛顿迭代相似,但仅限于求 \sqrt{n}。
设 x=\sqrt2,显然 1\lt x\lt\frac{3}{2}。
转化一下,得 0\lt x-1\lt\frac{1}{2}。
把不等式中三段同时平方,得 0\lt(x-1)^2 \lt(\frac{1}{2})^2,0\lt 3-2x \lt\frac{1}{4}。
再平方,得 0\lt17-12x\lt\frac{1}{16}。
再平方,得 0\lt577-408x\lt\frac{1}{256}。
以此类推,可得到 0\lt A-Bx\lt\frac{1}{C},可得 x\approx \frac{A }{B},绝对误差 \lt\frac{1}{B}\times\frac{1}{C}。
二项式展开
众所周知的:(1+x)^n=C_n^0+C_n^1x+C_n^2x^2+C_n^3x^3+\dots
我们可以把 n\in\mathbb{N} 拓展至 n\in\mathbb{R},将 x 改为 -x 得 (1-x)^n=C_n^0-C_n^1x+C_n^2x^2-C_n^3x^3+\dots
\sqrt2=2(1-\frac{1}{2})^\frac{1}{2}=\dots
二分查找
def f(exp):
l, r = 1, 2
while l + exp < r:
mid = (l + r) / 2
if mid * mid < 2:
l = mid
else:
r = mid;
return r
测量法
画一个等腰直角三角形,然后用纳米尺测量斜边 (bushi
连分数
已知 (\sqrt2)^2=2,可得 (\sqrt2+1)(\sqrt2-1)=1,即
\begin{aligned}
\sqrt2&=1+\frac{1}{1+\sqrt2} \\
&=1+\frac{1}{1+1+\frac{1}{1+\sqrt2}} \\
&=1+\frac{1}{2+\frac{1}{1+1+\frac{1}{1+\sqrt2}}} \\
&=1+\frac{1}{2+\frac{1}{2+\frac{1}{2+\ddots}}}
\end{aligned}
短除法
暂无图片,大概就是利用 (10a+b)^2=100a^2+(20a+b)b,将 2a 存起来,用类似于除法竖式的方法求 b,动态维护 2a。