開平法
テンプレート:出典の明記 開平法(かいへいほう、テンプレート:Lang-en-short)とは、正の数の平方根の小数表示を求めていくアルゴリズムである。開平や開平算、開平計算とも。平方根を求めることを開平するという。開法の一種。
開平法の原理
与えられた正の数の正の平方根の小数表示を求めるために、ここではまず漸化式を立てて、一般的な求値法を求める。そして、求値の明確化のために、開平法と呼ばれる筆算の原理を導出する。以下は十進法表示の場合だが、他の位取り記数法でも同様な計算で求められる。ここで述べるのと基本的には同じ方法で、立方根を求める開立法や、もっと一般に テンプレート:Mvar 乗根を求めることも可能である。 テンプレート:For2
問題の定式化
与えられた テンプレート:Math に対し、テンプレート:Math の位 テンプレート:Math を求める:
テンプレート:Mvar の首位を テンプレート:Mvar とする。つまり、テンプレート:Mvar は テンプレート:Math を満たす最小の テンプレート:Mvar とする。また便宜上 テンプレート:Math テンプレート:Math とする。
テンプレート:Math の テンプレート:Math の位より上(かみ)の位 テンプレート:Mvar は分かっているとし、テンプレート:Math の位 テンプレート:Mvar を求めるとする。すなわち
とおく。

テンプレート:Mvar は テンプレート:Math を満たす最大の テンプレート:Mvar、すなわち
- テンプレート:Math … (1)
を満たす最大の テンプレート:Mvar である。これを見つける。
- テンプレート:Mvar の値は テンプレート:Math から テンプレート:Math までの 10 通りなので、順に試していけば テンプレート:Mvar は求まる。
- テンプレート:Math のとき、テンプレート:Math より
- テンプレート:Math のとき、
テンプレート:Math より
- 右辺の計算値により、テンプレート:Mvar の値の見当を付けることができる。
これにより テンプレート:Mvar が求まれば、
の値が分かるから、
を満たす最大の テンプレート:Math を見つければよい。
このようにして、帰納的に テンプレート:Mvar テンプレート:Math の値が求まる。
漸化式の簡略化
不等式(1) を簡略化する。「テンプレート:Math」を基数 テンプレート:Math と合わせるため テンプレート:Math とする。そのため
とおくと、不等式(1) は
- テンプレート:Math … (1')
である。
(1') を満たす最大の テンプレート:Mvar を求めるために、テンプレート:Mvar の整数部分 テンプレート:Mvar を、テンプレート:Math から求める。
テンプレート:Math とおくと、
テンプレート:Math の整数部分は、テンプレート:Mvar の テンプレート:Math の位を テンプレート:Mvar とすると、テンプレート:Math に等しい。したがって、
- テンプレート:Math
- テンプレート:Math … (3)
(2), (3) から、(1') を満たす最大の テンプレート:Mvar を求めていく。
筆算による効率化
テンプレート:Mvar から不等式(1') を満たす最大の テンプレート:Mvar を求めていくには、筆算による帰納的計算が明確である。
| テンプレート:Mvar | ||
| テンプレート:Math | ||
| テンプレート:Math | ||
| テンプレート:Underline ↓ ↓ | ||
| テンプレート:Mvar テンプレート:Mvar テンプレート:Math | ||
| テンプレート:Underline | ||
| テンプレート:Math テンプレート:Math |
- テンプレート:Math から テンプレート:Math を引き、負とならない最大の テンプレート:Mvar を求める。(主算)
- 次の テンプレート:Math を求めるために、テンプレート:Math を求めておく。(副算)
具体的な計算方法
例として、ここでは テンプレート:Math の正の平方根 テンプレート:Math の小数表示を求める。初期値は、
- テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math, テンプレート:Math テンプレート:Math
漸化式による求値
まずは テンプレート:Math を求める。
- テンプレート:Math
- テンプレート:Math
- テンプレート:Math を満たす最大の テンプレート:Math は、テンプレート:Math である。
次に、テンプレート:Math を求める。
- テンプレート:Math
- テンプレート:Math
- テンプレート:Math を満たす最大の テンプレート:Math は、テンプレート:Math である。
テンプレート:Math を求める。
- テンプレート:Math
- テンプレート:Math
- テンプレート:Math を満たす最大の テンプレート:Math は、テンプレート:Math である。
同様の計算を繰り返すと、各項の値は次の表のようになる。
| テンプレート:Mvar | テンプレート:Math | テンプレート:Mvar | テンプレート:Mvar | テンプレート:Mvar | テンプレート:Mvar |
|---|---|---|---|---|---|
| 3 | 05 | 5 | 0 | 4 | 2 |
| 2 | 63 | 163 | 4 | 4 | 3 |
| 1 | 07 | 3407 | 46 | 129 | 7 |
| 0 | 38 | 13838 | 474 | 3269 | 2 |
| −1 | 13 | 435413 | 4744 | 9484 | 9 |
| −2 | 20 | 837220 | 47458 | 427041 | 1 |
| −3 | 00 | 36263900 | 474582 | 474581 | 7 |
| −4 | 00 | 304311100 | 4745834 | 284750076 | 6 |
| −5 | 00 | 1956102400 | 47458352 | 1898334096 | 4 |
| ︙ | ︙ | ︙ | ︙ | ︙ | ︙ |
テンプレート:Mvar の値から
である。
筆算による求値
テンプレート:Mvar の値は、先述の筆算による方法(開平法)によりさらに簡単に計算できる。
- 本節は、これまでに登場した漸化式の原理により筆算の手順を説明するが、筆算の手順だけを知りたいのであれば、漸化式による説明の箇所を読み飛ばしても差し支えない
テンプレート:Math の正の平方根 テンプレート:Math の小数表示を求める。
まず、テンプレート:Mvar の値を、小数点から2桁ずつ「ブロック」に分けて書く。
| テンプレート:Math |
- 各ブロックは、テンプレート:Math の下線部に該当する。
左側に縦2つ等しい値を書き、積が左端のブロック (5) を超えない最大の値 (2) を見つける。ブロック (5) の上に見つけた値 (2) を書く。左の筆算を立て、下に和の計算結果 (4) を書く。ブロック (5) の下に、左の筆算の、和でなく積の計算結果(この場合は和と同じ テンプレート:Math)を書く。筆算を立て、差の計算結果 (1) をその下に書く。
| テンプレート:Math | ||
| テンプレート:Math テンプレート:Math | ||
| 積がテンプレート:Math以下の最大値→テンプレート:Underline←左の筆算の積 | ||
| 和→テンプレート:Math テンプレート:Math←差 |
- テンプレート:Math より テンプレート:Math。テンプレート:Math より、テンプレート:Math を満たす最大の テンプレート:Math は テンプレート:Math。この時 テンプレート:Math。次の計算のために、テンプレート:Math, テンプレート:Math を計算しておく。
差の計算結果 (1) の右隣りに、上のブロック (63) を下ろす。左の筆算の末位に縦2つ等しい値を書き、積が下ろしてできた数 (163) を超えない最大の値 (3) を見つける。ブロック (63) の上に見つけた値 (3) を書く。左の筆算を立て、下に和の計算結果 (46) を書く。下ろしてできた数 (163) の下に、左の筆算の積の計算結果 (129) を書く。筆算を立て、差の計算結果 (34) をその下に書く。
| テンプレート:Math テンプレート:Math | ||
| テンプレート:Math テンプレート:Math | ||
| テンプレート:Underlineブロックを下ろす | ||
| テンプレート:Math テンプレート:Math テンプレート:Math | ||
| 積がテンプレート:Math以下の最大値→テンプレート:Underline←左の筆算の積 | ||
| 和→テンプレート:Math テンプレート:Math←差 |
- テンプレート:Math。テンプレート:Math を満たす最大の テンプレート:Math は テンプレート:Math。この時 テンプレート:Math。次の計算のために、テンプレート:Math, テンプレート:Math を計算しておく。
同様の計算を(テンプレート:Math まで)行うと、次のようになる。
これより
である。
検算してみると、
となり
が確かに成り立つ。
珠算による開平法
珠算による開平法として次の方法がある。
- 倍根法
- 半九九法
根の定位
根の定位の仕方は次のようになる。
- 平方が整数のとき:平方の一の位から左へ2桁ずつ区分して、その区分できた回数が、根の桁数となる。
- 平方が帯小数のとき:平方の一の位から左へ2桁ずつ区分して、その区分できた回数が、根の整数の桁数となる。
- 平方が小数のとき:平方の テンプレート:Math を2桁ずつ区分して、その区分できた回数が、根の小数点以下の テンプレート:Math の桁数となる。