この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方)
出典検索?: "開平法"
開平法(かいへいほう、英: extraction of square root)とは、正の数の平方根の小数表示を求めていくアルゴリズムである。開平や開平算、開平計算とも。平方根を求めることを開平するという。開法の一種。 与えられた正の数の正の平方根の小数表示を求めるために、ここではまず漸化式を立てて、一般的な求値法を求める。そして、求値の明確化のために、開平法と呼ばれる筆算の原理を導出する。以下は十進法表示の場合だが、他の位取り記数法でも同様な計算で求められる。ここで述べるのと基本的には同じ方法で、立方根を求める開立法や、もっと一般に n 乗根を求めることも可能である。手続きを簡略化した筆算による方法については「#筆算による求値」を参照 与えられた √x (x > 0) に対し、10k の位 ak (k ? n) を求める: x = ∑ k ≤ n 10 k a k = 10 n a n + 10 n − 1 a n − 1 + ⋯ + 10 2 a 2 + 10 a 1 + a 0 + 10 − 1 a − 1 + 10 − 2 a − 2 + ⋯ {\displaystyle {\begin{aligned}{\sqrt {x}}&=\textstyle \sum \limits _{k\leq n}10^{k}a_{k}\\&=10^{n}a_{n}+10^{n-1}a_{n-1}+\cdots +10^{2}a_{2}+10a_{1}+a_{0}+10^{-1}a_{-1}+10^{-2}a_{-2}+\cdots \end{aligned}}} x の首位を an とする。つまり、n は √x < 10k+1 を満たす最小の k とする。また便宜上 ak = 0 (k > n) とする。 √x の 10m の位より上(かみ)の位 pm は分かっているとし、10m の位 am を求めるとする。すなわち p m = ∑ k = m + 1 n 10 k − m − 1 a k = 10 n − m − 1 a n + 10 n − m − 2 a n − 1 + ⋯ + 10 a m + 2 + a m + 1 {\displaystyle p_{m}=\textstyle \sum \limits _{k=m+1}^{n}10^{k-m-1}a_{k}=10^{n-m-1}a_{n}+10^{n-m-2}a_{n-1}+\cdots +10a_{m+2}+a_{m+1}} とおく。正方形ABCD の面積は 10−2mx, 青い正方形の面積は 100pm2 で、橙色と桃色の部分の面積の和が (20pm + am)am = rm である。pm の値はすでに決まっていて、am をどこまで大きく取れるのかが問題である。 am は 10m+1pm + 10mam ? √xを満たす最大の am、すなわち(20pm + am)am ? 10−2mx − 100pm2 … (1) を満たす最大の am である。これを見つける。am の値は 0 から 9 までの 10 通りなので、順に試していけば am は求まる。m = n のとき、pn = 0 よりan2 ? 10−2nxm < n のとき、20pmam ? (20pm + am)am ? 10−2mx − 100pm2 pm ≠ 0 より a m ≤ 10 − 2 m x − 100 p m 2 20 p m {\displaystyle a_{m}\leq {\frac {10^{-2m}x-100{p_{m}}^{2}}{20p_{m}}}} 右辺の計算値により、am の値の見当を付けることができる。 これにより am が求まれば、pm−1 = 10pm + am の値が分かるから、(20pm−1 + am−1)am−1 ? 10−2(m−1)x − 100pm−12 を満たす最大の am−1 を見つければよい。 このようにして、帰納的に ak (k ? n) の値が求まる。 不等式(1) を簡略化する。「20」を基数 10 と合わせるため 10 × 2 とする。そのためqm = 2pmym = 10−2mx − 100pm2 とおくと、不等式(1) は(10qm + am)am ? ym … (1') である。qm = 2pm = 2(10pm+1 + am+1) = 10qm+1 + 2am+1 … (2) (1') を満たす最大の am を求めるために、ym の整数部分 zm を、zm+1 から求める。 rm = (10qm + am)am とおくと、ym = 10−2mx − 100pm2 = 100{10−2(m+1)x − (10pm+1 + am+1)2} = 100{10−2(m+1)x − 100pm+12} − 100(20pm+1 + am+1)am+1 = 100ym+1 − 100rm+1 100ym+1 = 10−2mx − 10000pm+12 の整数部分は、x の 10i の位を xi とすると、100zm+1 + 10x2m+1 + x2m に等しい。したがって、zm = (100zm+1 + 10x2m+1 + x2m) − 100rm+1 = 100(zm+1 − rm+1) + 10x2m+1 + x2m … (3) (2), (3) から、(1') を満たす最大の am を求めていく。 pm から不等式(1') を満たす最大の am を求めていくには、筆算による帰納的計算が明確である。 am 例として、ここでは x = 5630738.132 の正の平方根 √x の小数表示を求める。初期値は、 まずは a3 を求める。 次に、a2 を求める。 a1 を求める。 同様の計算を繰り返すと、各項の値は次の表のようになる。
開平法の原理
問題の定式化
漸化式の簡略化
筆算による効率化
√ … … x2m+1 x2m
zm+1
rm+1 ↓ ↓
qm am zm+1 − rm+1 x2m+1 x2m
am (10qm + am)am
qm−1 zm − rm
zm = 100(zm+1 − rm+1) + 10x2m+1 + x2m から rm = (10qm + am)am を引き、負とならない最大の am を求める。(主算)
次の am−1 を求めるために、qm−1 = (10qm + am) + am を求めておく。(副算)
具体的な計算方法
x6 = 5, x5 = 6, x4 = 3, x3 = 0, x2 = 7, x1 = 3, x0 = 8, x−1 = 1, x−2 = 3, x−3 = 2, xi = 0 (i < −3)
漸化式による求値
106 ? x < 108 より、n = 3
z4 = 0
r4 = 0
p3 = 0 より q3 = 0
z3 = 100(z4 − r4) + 10x7 + x6 = 100 × (0 − 0) + 5 = 5r3 = (10q3 + a3)a3 = a32a32 ? 5 を満たす最大の a3 は、a3 = 2 である。
q2 = (10q3 + a3) + a3 = 2 + 2 = 4
z2 = 100(z3 − r3) + 10x5 + x4 = 100 × (5 − 4) + 63 = 163r2 = (10q2 + a2)a2 = (40 + a2)a2(40 + a2)a2 ? 163 を満たす最大の a2 は、a2 = 3 である。
q1 = (10q2 + a2) + a2 = 43 + 3 = 46
z1 = 100(z2 − r2) + 10x3 + x2 = 100 × (163 − 129) + 7 = 3407r1 = (10q1 + a1)a1 = (460 + a1)a1(460 + a1)a1 ? 3407 を満たす最大の a1 は、a1 = 7 である。
Size:27 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)』
担当:undef