開平法:平方根の筆算(square root by long division)とは、$0$ 以上の整数 $N$ を右から 2 桁ずつ区切り、平方根の数字を上から 1 桁ずつ決める筆算である。根拠は $(10a+d)^2=100a^2+(20a+d)d$ で、「ここまでの答え $a$ を 2 倍して後ろに次の数字 $d$ をつけた数に $d$ を掛けて引く」操作は $(10a+d)^2-100a^2$ を引くことにあたる。各段で条件を満たす最大の数字は必ず $0$〜$9$ の中にあり、最後に $\lfloor\sqrt N\rfloor$ と余り $N-\lfloor\sqrt N\rfloor^2$($2\lfloor\sqrt N\rfloor$ 以下)が得られる。$(A+t)^2=A^2+(2A+t)t$ を使えば、多項式の 2 乗の平方根も同じ手順で上から 1 項ずつ求まる。
平方根も、割り算と同じように筆算で 1 桁ずつ求められる。この筆算を 開平法 という。手順は「2 桁ずつ区切る」「前の答えを 2 倍して、次の数字を後ろにつける」と覚えることが多いが、その理由は分配法則の式 $(10a+d)^2=100a^2+(20a+d)d$ ただ 1 つである。この記事では、開平法の各段がこの式から出てくること、各段で決める数字がいつも $0$〜$9$ に収まり、最後に $\lfloor\sqrt N\rfloor$ と余り $N-\lfloor\sqrt N\rfloor^2$ が正しく得られることを証明する。さらに、同じ手順で多項式の平方根も求められることを見る。
$\sqrt{54756}$ を開平法で求める(図 1)。
54756 の開平法。左の列の 2, 43, 464 は「ここまでの答えの 2 倍の後ろに次の数字をつけた数」
$\sqrt2$ を求める。$2$ の後ろに小数点以下の $00$ を必要なだけつけ、$2\,|\,00\,|\,00\,|\,00\,|\,00$ と区切る。
手順は機械的だが、次の問いに答えないと、なぜ正しいかは分からない。
| 開平法の操作 | 数学の言葉 |
|---|---|
| 2 桁ずつ区切る | $100=10^2$ の位(100 進法)で見る |
| 答えを 2 倍して後ろに $d$ をつける | $20a+d$ |
| $(20a+d)\times d$ を引く | $(10a+d)^2-100a^2$ を引く |
| 各段の答え | $\lfloor\sqrt{N_j}\rfloor$(上の区切りだけでできた数の平方根の整数部分) |
| 最後の残り | $N-\lfloor\sqrt N\rfloor^2$ |
どんな数 $a,d$ についても
$$
(10a+d)^2=100a^2+(20a+d)\,d
$$
が成り立つ。
方針:左辺を分配法則で展開し、$d$ を含む項をまとめる。
段 1。分配法則により
$$
(10a+d)^2=(10a+d)(10a+d)=100a^2+10ad+10ad+d^2=100a^2+20ad+d^2
$$
である。
段 2。$20ad+d^2$ から分配法則で $d$ をくくり出すと $(20a+d)d$ になる。よって $(10a+d)^2=100a^2+(20a+d)d$ である。$\square$
この式は図形で見ると分かりやすい(図 2)。1 辺 $10a+d$ の正方形は、1 辺 $10a$ の正方形と、残りの L 字の部分に分かれる。L 字の部分は、縦横 $10a\times d$ の長方形 2 つと 1 辺 $d$ の正方形からなり、面積は $2\cdot10a\cdot d+d^2=(20a+d)d$ である。開平法の「2 倍して後ろに $d$ をつけた数に $d$ を掛ける」は、この L 字の面積を計算している。
(10a+d)² は、1 辺 10a の正方形(面積 100a²)と L 字の部分(面積 (20a+d)d)に分かれる。a=2, d=3 の場合
開平法で求めるのは、平方根の整数部分である。
$0$ 以上の整数 $N$ について、$a^2\le N$ を満たす最大の整数 $a\ge0$ を $\lfloor\sqrt N\rfloor$ と書き、$\sqrt N$ の整数部分 という。$N-\lfloor\sqrt N\rfloor^2$ を 余り という。$N$ が平方数(整数の 2 乗)であることは、余りが $0$ であることと同じである。
$a=\lfloor\sqrt N\rfloor$ とすると、$0\le N-a^2\le2a$ である。
方針:$a$ が最大であることから $N<(a+1)^2$ を出し、展開する。
段 1。定義から $a^2\le N$ なので $N-a^2\ge0$ である。
段 2。$a+1$ は $a$ より大きいので、$a$ の最大性から $(a+1)^2\le N$ ではない。つまり $N<(a+1)^2=a^2+2a+1$ である。
段 3。段 2 から $N-a^2<2a+1$ である。両辺は整数なので $N-a^2\le2a$ である。$\square$
開平法の手順を式で書く。右から 2 桁ずつ区切ることは、$N$ を 100 進法で表すことである。
$0$ 以上の整数 $N$ を
$$
N=n_m\cdot100^m+n_{m-1}\cdot100^{m-1}+\dots+n_1\cdot100+n_0\qquad(0\le n_j\le99)
$$
と書く($n_j$ が右から $j$ 番目の 2 桁の区切り。一番右を $0$ 番目とする)。上の区切りから $n_j$ までを使ってできる数を
$$
N_j=n_m\cdot100^{m-j}+\dots+n_{j+1}\cdot100+n_j\qquad(j=m,\dots,0),\qquad N_{m+1}=0
$$
とおく。$N_m=n_m$、$N_0=N$ であり、分配法則により $N_j=100\,N_{j+1}+n_j$ である(1 つ下の区切りを下ろすことは、$100$ 倍して足すことである)。
$a_{m+1}=0$、$r_{m+1}=0$ とし、$j=m,m-1,\dots,0$ の順に次を行う。
def-srl-algo の手順で、すべての $j=m+1,m,\dots,0$ について
$$
a_j=\lfloor\sqrt{N_j}\rfloor,\qquad r_j=N_j-a_j^2
$$
が成り立つ。とくに $a_0=\lfloor\sqrt N\rfloor$、$r_0=N-\lfloor\sqrt N\rfloor^2$ であり、$0\le r_0\le2a_0$ である。また各段で、$(10a_{j+1}+d)^2\le N_j$ を満たす $d$ のうち最大のものは $0$〜$9$ の中にある(2 の「$d\le9$」という制限で、答えを取りこぼすことはない)。
方針:「$a_{j+1}=\lfloor\sqrt{N_{j+1}}\rfloor$、$r_{j+1}=N_{j+1}-a_{j+1}^2$」を仮定して、次の段でも同じ式が成り立つことを示す。鍵は lem-srl-identity で、手順 2 の条件を $(10a+d)^2\le N_j$ に言い換えることである。
段 0(出発点)。$j=m+1$ では $N_{m+1}=0$、$a_{m+1}=0=\lfloor\sqrt0\rfloor$、$r_{m+1}=0=0-0^2$ なので成り立つ。
以下、$j+1$ で成り立つと仮定し、$a=a_{j+1}$ とおく。仮定から $r_{j+1}=N_{j+1}-a^2$ である。
段 1(下ろした数)。手順 1 と仮定、$N_j=100N_{j+1}+n_j$ から
$$
c_j=100\,r_{j+1}+n_j=100(N_{j+1}-a^2)+n_j=(100N_{j+1}+n_j)-100a^2=N_j-100a^2
$$
である。
段 2(条件の言い換え)。$0\le d\le9$ について、lem-srl-identity より $(20a+d)d=(10a+d)^2-100a^2$ なので、
$$
(20a+d)\,d\le c_j\iff(10a+d)^2-100a^2\le N_j-100a^2\iff(10a+d)^2\le N_j
$$
である。つまり手順 2 の $d_j$ は、「$(10a+d)^2\le N_j$ を満たす $0\le d\le9$ のうち最大のもの」である。
段 3(答えは $10a$ と $10a+9$ の間)。$a=\lfloor\sqrt{N_{j+1}}\rfloor$ なので $a^2\le N_{j+1}$ で、lem-srl-remainder の段 2 と同じく $N_{j+1}<(a+1)^2$、整数なので $N_{j+1}\le(a+1)^2-1$ である。よって
$$
(10a)^2=100a^2\le100N_{j+1}\le100N_{j+1}+n_j=N_j
$$
であり、$n_j\le99$ から
$$
N_j=100N_{j+1}+n_j\le100\bigl((a+1)^2-1\bigr)+99=100(a+1)^2-1<(10a+10)^2
$$
である。$s=\lfloor\sqrt{N_j}\rfloor$ とおくと、$(10a)^2\le N_j$ から $s\ge10a$、$N_j<(10a+10)^2$ から $s<10a+10$、つまり $s\le10a+9$ である。
段 4(立てる数字)。$e=s-10a$ とおくと、段 3 より $0\le e\le9$ で、$(10a+e)^2=s^2\le N_j$ である。一方 $e< d\le9$ なら $10a+d\ge s+1$ なので $(10a+d)^2\ge(s+1)^2>N_j$ である($s$ の最大性)。よって段 2 の条件を満たす最大の $d$ は $e$ であり、$d_j=e$、$a_j=10a+d_j=s=\lfloor\sqrt{N_j}\rfloor$ である。これで「最大の $d$ が $0$〜$9$ の中にある」ことも示された。
段 5(残り)。手順 3、段 1、lem-srl-identity から
$$
r_j=c_j-(20a+d_j)d_j=(N_j-100a^2)-\bigl((10a+d_j)^2-100a^2\bigr)=N_j-a_j^2
$$
である。
段 6(まとめ)。段 0 から始めて段 1〜5 をくり返すと($j$ についての 数学的帰納法。数学的帰納法と整列性)、すべての $j$ で $a_j=\lfloor\sqrt{N_j}\rfloor$、$r_j=N_j-a_j^2$ が成り立つ。$j=0$ では $N_0=N$ なので $a_0=\lfloor\sqrt N\rfloor$、$r_0=N-a_0^2$ であり、lem-srl-remainder により $0\le r_0\le2a_0$ である。$\square$
ex-srl-sqrt2 のように $00$ を $k$ 組つけ足すことは、$N$ の代わりに $100^kN$ に開平法を使うことである。$\sqrt{100^kN}=10^k\sqrt N$ なので、thm-srl-main により答えは $\lfloor10^k\sqrt N\rfloor$、つまり $\sqrt N$ の小数第 $k$ 位までを並べた数になる。$\sqrt2$ の例では $k=4$ で、$\lfloor10^4\sqrt2\rfloor=14142$ である。
$\sqrt2$ は分数で表せない数(無理数)である。証明は 実数とは何か:無理数の証明 で扱う。循環する小数(途中から $0$ が続く小数も含む)は分数で表せることが知られているので(この記事では証明しない)、開平法で求める $\sqrt2$ の小数の桁は、どこまで続けても循環しない。
割り算の筆算と同じく、立てる数字は「見積もって、大きすぎたら 1 ずつ減らす」ことが多い。$c_j\mathbin{÷}(20a)$ で見積もると、$(20a+d)d$ の $+d$ の分だけ大きすぎることがある(ex-srl-sqrt2 の 2 段目の $5$)。定理が保証するのは、正しい数字が $0$〜$9$ の中に必ずあることである。
lem-srl-identity の $10a$ を多項式 $A$ に、$d$ を多項式 $t$ に置きかえると、$(A+t)^2=A^2+(2A+t)\,t$ である。「$20a+d$」は「$2A+t$」になる。これを使うと、多項式の平方根も上から 1 項ずつ求められる。
$f=x^4+4x^3+10x^2+12x+9$ の平方根を求める。
$g(x)=b_nx^n+b_{n-1}x^{n-1}+\dots+b_0$($b_n\ne0$)とし、$f=g^2$ とする。$0\le k\le n$ について、$g$ の上から $k+1$ 項を $A_k=b_nx^n+\dots+b_{n-k}x^{n-k}$ とおく。$k< n$ のとき、$f-A_k^2$ は $0$ か次数が $2n-k-1$ 以下の多項式で、その $x^{2n-k-1}$ の係数は $2b_nb_{n-k-1}$ である。したがって、次の項は
$$
b_{n-k-1}x^{n-k-1}=\frac{(f-A_k^2\ \text{の}\ x^{2n-k-1}\ \text{の項})}{2b_nx^n}
$$
で求まる。さらに $t=b_{n-k-1}x^{n-k-1}$ とおくと $f-A_{k+1}^2=(f-A_k^2)-(2A_k+t)\,t$ であり、最後は $f-A_n^2=0$ である。
方針:$R=g-A_k$ とおき、$f-A_k^2=(2A_k+R)R$ と書いて、この積の最高次の項を調べる。
段 1(残りの形)。$g=A_k+R$ で、$R=b_{n-k-1}x^{n-k-1}+\dots+b_0$ は次数が $n-k-1$ 以下(または $0$)である。分配法則により
$$
f-A_k^2=(A_k+R)^2-A_k^2=2A_kR+R^2=(2A_k+R)\,R
$$
である。
段 2(次数と係数)。$2A_k+R$ の最高次の項は $2b_nx^n$ である($R$ の次数は $n$ より小さい)。$R$ の項は $x^{n-k-1}$ 以下なので、積 $(2A_k+R)R$ の項の次数は $n+(n-k-1)=2n-k-1$ 以下である。$x^{2n-k-1}$ の項は、$2A_k+R$ の $x^n$ の項と $R$ の $x^{n-k-1}$ の項の積だけから出るので、係数は $2b_n\cdot b_{n-k-1}$ である。$b_n\ne0$ なので、これを $2b_nx^n$ で割ると次の項 $b_{n-k-1}x^{n-k-1}$ が得られる。
段 3(引き算の形)。$A_{k+1}=A_k+t$ なので、分配法則により
$$
A_{k+1}^2=A_k^2+2A_kt+t^2=A_k^2+(2A_k+t)\,t
$$
であり、$f-A_{k+1}^2=(f-A_k^2)-(2A_k+t)t$ である。$A_n=g$ なので $f-A_n^2=0$ である。$\square$
$f=x^4-2x^3+3x^2-2x+1$ の平方根を求める。
同じ手順を、次数の低い項から始めて行うこともできる(昇べきの開平法)。この場合、手順はふつう終わらず、項が限りなく続く。
$1+x$ に、定数項から順に開平法を使う。
上の 4 項 $1+\frac x2-\frac{x^2}8+\frac{x^3}{16}$ に $x=0.1$ を入れると
$$
1+0.05-0.00125+0.0000625=1.0488125
$$
である。電卓の値は $\sqrt{1.1}=1.0488088\cdots$ で、差は $0.0000037$ ほどである。4 項の 2 乗を展開すると $1+x+\frac{5}{64}x^4-\frac{x^5}{64}+\frac{x^6}{256}$ となり、$x^3$ までは $1+x$ と一致している。
lem-srl-identity と thm-srl-main で使った $10$ の性質は、「$2$ 以上の整数である」ことだけである。$10$ を底 $B$ に取りかえると、式は $(Ba+d)^2=B^2a^2+(2Ba+d)\,d$ になり、$N$ を $B^2$ 進法で区切って、各段で $0\le d\le B-1$ の数字を立てる。証明は $10$ を $B$、$100$ を $B^2$、$9$ を $B-1$ に取りかえるだけで同じである。
$B=2$ のとき、数字は $0$ か $1$ で、式は $(2a+d)^2=4a^2+(4a+d)d$ である。各段では「$4a+1\le c$ なら $1$、そうでなければ $0$」を決めるだけでよく、掛け算の見積もりがいらない。
コンピュータで平方根の整数部分を求めるとき、2 進法で上の桁から 1 桁ずつ決める方法がある(Sho08 Exercise 3.29 は、答えの候補に $2^i$ を足してよいかを上の桁から順に調べる形の、同じ考えの算法である)。
| 外した条件 | 崩れる主張 | ボックス |
|---|---|---|
| 右から 2 桁ずつ区切る | 答えが $\lfloor\sqrt N\rfloor$ | ex-srl-wrong-group |
| 各段で条件を満たす最大の $d$ をとる | 各段の数字が 1 桁(thm-srl-main) | ex-srl-too-small |
| $f$ が多項式の 2 乗(prop-srl-poly) | 多項式の開平法で残りが $0$ になる | ex-srl-nonsquare |
$54756$ を左から $54\,|\,75\,|\,6$ と区切ると、区切りの並び $(54,75,6)$ は $54\cdot100^2+75\cdot100+6=547506$ を表す。これに開平法を使うと、答えは $\lfloor\sqrt{547506}\rfloor=739$(余り $1385$)となり、$\sqrt{54756}=234$ とは違う。100 進法の区切りは、一の位から 2 桁ずつとらないと、もとの数を表さない。小数点以下は逆に、小数点から右へ 2 桁ずつ区切る($\sqrt{2}$ の $2\,|\,00\,|\,00$ のように)。
ex-srl-start の 2 段目で、$3$ の代わりに $2$ を立てたとする。$42\times2=84$ を引いた残りは $147-84=63$ で、$63>2\cdot22=44$ となり lem-srl-remainder の評価が崩れる。3 段目は $c=6356$ で、$(440+d)d\le6356$ を満たす $d$ は $d=9$($449\times9=4041$)でもまだ余裕があり、ちょうど等しくなるのは $d=14$($454\times14=6356$)である。$14$ は 1 桁の数字ではないので、正しい答え $234=220+14$ に 1 桁ずつでは届かない。prf-srl-main の段 3 で使った「$a=\lfloor\sqrt{N_{j+1}}\rfloor$」が成り立たないからである。
Mathpediaは寄付と、参考文献の書籍リンク(Amazonアソシエイト)の紹介料で運営されています。 支援について / 寄付する