求根号二的 N 种方法

· · 学习·文化课

关于 \sqrt2114514 种求法

我只是一只小升初的蒟蒻,有不对的地方勿喷。

牛顿迭代法

牛顿迭代法适用于解 f(x)=0 形式的方程,每一次迭代可以让目标的误差位数 \times2。它的具体操作是这样的:

设一个近似初值 x_0

  1. x_1=x_0-\frac{f(x_0)}{f'(x_0)}
  2. 如果 x_1 满足精度要求,则返回 x \approx x_1
  3. x_0=x_1
  4. 回到 1.,继续执行。

如何用牛顿迭代法求 \sqrt2 呢?

f(x)=x^2-2,则 f'(x)=2x。\ 设 x_0=2,重复执行以下操作,直到达到精度要求:

  1. 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})
  2. 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})^20\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