平方根の求め方

当ページを読んで、「高校生当時、レポートを書くのにタイガー計算機を使っていました」という助川さんから、開平(平方を開く、つまり平方根を求める)計算の方法を教えてもらいました。

ネット上を調べたところでは、あまりこの方法の情報がなかったので、紹介しておきます。


まず、わかりやすい例として 25 の平方根(√25)を求める方法から。

計算手順の基本は、「奇数を順次引いていく」だけです。これだけで平方根が求まります。

25-1=24
24-3=21
21-5=16
16-7=9
9-9=0

この場合、5回で計算が終了するので、√25 = 5 です。


このことの数学的な意味を、図形で検証します。

√25最初に「1を引く」ということは、図形の左上の■の部分を引く、ということです。

つづいて、「3を引く」ということは、左上の■を囲む、□の3つ分を引く、ということです。

同様に、5を引くのはさらに周囲の■部分を引くこと、7は□部分を…と続けていって、9を引いたら結果が「0」になりました。

つまり、図形的には上の5×5の、25マスを埋めきったことになります。√25 = 5 です。



つづいて、もっと大きな数でも平方根を求めてみましょう。この場合、10×10=100 であることを利用して、2桁づつ数値を区切って計算を行います。

例題として、√529を求めてみます。まず、下から2桁づつ区切って、5 と 29に分かれていると考えます。

5-1=4
4-3=1

ここでこれ以上引けなくなりました。2回で終了なので、答えの上の桁は2です。つづいて、下の桁である「29」をくっつけて、129が残っていると考えます。

このとき、「引く数」としては、3 に 1 を足した 4 を上の桁にもってきて、41 からはじめます。(このことの意味は後で解説します)

129-41=88
88-43=45
45-45= 0

ここで終わりです。上の桁が2、下の桁が3なので、√529 = 23 です。


√529こちらも図形で検証してみましょう。

最初に上の桁で1を引くということは、10*10=100 を全体から引いていることになります。図形の左上の部分です。3を引くのも、図形で赤く塗った 300を引くのと同じこと。

ここで、それ以上引けなくなりましたので、引く図形の面積を「細かく」します。


下の桁にすぐにうつる前に、いま計算が終わった「上の桁」の図形について見直しておきましょう。

赤い四角形は、縦横2個、左上が無い形で「3個」ありました。これが例えば、赤の外側にさらに5個の四角形を並べる場合だと、縦横は3個になります。n 個の四角形を並べる時は、常に縦横には (n+1)/2 個並んでいることになります。


では、下の桁の計算にうつるために、並べる四角形のサイズを縦横 1/10 にします。並べる数は 10 倍になります。

赤い四角形は、縦横2個並んでいましたので、1/10 サイズで考えると、同じ場所に縦横20個の四角形を並べることができます。そのまま少しずらして、赤い四角形の「外側」、図形では青い細い線で示される部分に持っていくと、角の部分にもう一つ必要になるので、縦に 20 個、横に 20 個、角に 1 個、合計では 41 個必要です。

この計算は、もっと簡単にできます。基本的に、上の桁の計算が n で終わったとき、次の桁では (n+1)*10+1 から計算が始まります。タイガー計算機的には「つまみを 1 上げて、桁をずらして、新しい桁のつまみを 1 にセット」です。計算ですらない機械的操作です。これで、下の桁の計算準備が整いました。

青の 41 個を引いた後は、基本に従って順次奇数を引いていきます。緑の部分は 43、黄色は 45 を引くことになります。

つまり、最初に100単位の大きな領域を引いておいて、引けなくなったら細い領域を徐々に広げていく…という戦略で、図形全体を求めているわけです。


例では3桁でしたが、同じ作業の繰り返しで、もっと大きな桁数でも求められます。


上の2つの例では、あえて整数で割り切れる数を例題としました。しかし、割り切れない数でも求めることができます。

話としては単純で、固定小数点演算を行うだけですが…固定小数点ということは、結局のところ整数演算ですから。この場合、桁を下にずらしていくときには、見えない 00 が入っていた、と考えて続けます。

√13を求めてみましょう。あらかじめ答えを書いておくと、3.60555128 になるはずです。

13-1=12
12-3= 9
9-5= 4

最初の桁は3です。これ以上は続けられないので、桁をずらします。ここから先は小数点以下の計算になりますが、求める数の小数点以下は「00」が続いていると考えます。

400-61=339
339-63=276
276-65=211
211-67=144
144-69= 75
75-71= 4

2桁目は6です。これ以上は続けられないので、さらに桁をずらします。

しかし、ここで 400 - 721 を行おうとすると、1度も計算できません。3桁目は 0 です。


次の桁は、少し通常と異なる手順となります。普通なら、「最後に引いた」数に 1 を足してから桁を上げますが、最後に引いた数がありません。

この場合、最後に引く「予定だった」数から 1 を引いてから、桁を上げます。


このことの意味を考えて見ましょう。そもそも、引く数を奇数にしているのは、図形的に考えた場合に「角」の部分があるためです。

十分に埋まった場合は、図形的には既に説明したとおりに、四角形の大きさを小さくして(つまり、全体の桁を上げて)作業を進めます。このとき、引く数は図形で考えれば、それまで埋めた正方形の「2辺」の外側に移動します。

しかし、「引けなかった場合」は、すでに移動は考慮済みなので、そのまま四角形の大きさをさらに小さくするだけです。

単に 10 倍してしまうと、角の 1 個も 10 倍することになってしまうため、正しくありません。なので、先に 1 を引いてから 10 倍し、その後で改めて 1 を足します。(タイガー計算機的にはつまみの操作と桁ずらしの機械的作業である、というのは先に書いたのと同じです)

では、実際の計算をして見ましょう。先に書いたように、前の計算は 721 を引く予定で引けませんでしたから、次の引く数は (721-1)*10 + 1 で 7201 になります。

40000-7201=32799
32799-7203=25596
25596-7205=18391
18391-7207=11184
11184-7209= 3975

4桁目は5です。同様に、さらに桁をずらします。

397500-72101=325399
325399-72103=253296
253296-72105=181191
181191-72107=109084
109084-72109= 36975

ここまでで、√13 = 3.6055 までは求められました。さらに続ければ、もっと下の桁まで求められます。


手計算の手順を見ていると、引き算の桁がだんだん大きくなったりして面倒くさそうに見えるかもしれません。

しかし、タイガー計算機では、引き算はクランクを回すだけで完了します。回した回数は自動的にカウントされるので、結果もすぐに読めます。

桁をずらす作業も、最初からその機構が作りこまれていますし、奇数を順次入れる、という作業も、引く数を設定するレバーに指を掛けたまま、クランクを回すごとに2目盛り下にずらす、ということを続けるだけです。


そう考えると、ここで紹介したアルゴリズムが、非常にタイガー計算機向きに使いやすい方法であることがお分かりいただけると思います。

平方根を求めるアルゴリズムはほかにも数多くありますが、計算に使う「道具」にあわせて使いやすい手法を考え出した知恵には、本当に頭が下がる思いです…


当初、助川さんから頂いたメールは、検算して「確かに計算できそうだ」とはわかっても、なぜそれが平方根の計算になるのか理解できませんでした。助川さんも「実際そのように計算していた」というだけで、意味までは理解しておられませんでしたし…

そのままでは記事にはできないと思い悩んでいたところ、妻がいっしょになって考えてくれ、数学的な意味を見出してくれました。しかし、計算手順を知らなければその作業もできなかったでしょう。

貴重な情報をありがとうございました。助川さんと自分の妻に (^^; 感謝しつつ記事を締めくくります。


追記 2009.09.03

ここに書かれた方法は、タイガー計算機で使用するにはわかりやすい方法ですし、手計算で計算するにも直感的に理解しやすい方法ではあります。

しかし、直感的で判りやすいためか、「コンピューターでの平方根の計算方法」としてのリンクで参照されることが増えてきました。プログラムで生計を立てている身からすると、それはちょっと違うような…


コンピューターで計算するのであれば、手順は多少面倒でも、計算回数が少ない方法が適しています。古典的なところではニュートン法などを調べてみるとよいかと思います。


追記 2010.11.03

ここに書かれたアルゴリズムで、√2を30桁まで計算してみてほしい、と言う要望を頂いたので、別ページに書きました。

その計算の最中に、「引けない場合」の処理について言及が必要だと考えたため、このページの計算サンプルを改めました。ページ作成当初から√2を例題としていましたが、「引けない場合」が初期に現れる√13を例題とするようにしました。


追記 2011.12.08

「もっと簡単な解説を」という意見が多いので…余りに多いので…別ページに書きました

「簡単に」と「簡潔に」は同居しない。基礎から書いているので、非常に長い説明です。

上の説明だけでは理解できない、という方はどうぞ。

(ページ作成 2007-08-31)
(最終更新  2011-12-08)

戻る     次へ
トップページへ

このページの誤字脱字発見・情報提供・意見などありましたら、下の一行掲示板へどうぞ。樫樹の広場から全体を見ることも出来ます。

名前 内容

あきよし】 kaasaさんの質問のあたり、「理解できない」人が多く、解説要望も多いので、すでに別ページで解説済みです。ややこしい部分を理解しやすくするため、解説は長いですが、読んでみて下さい。 (2012-01-06 15:16:42)

【kaasa】 ルート13の最後の方の計算で、397500-72101 =325399の72101が何故10(7209-1)+1で72081にならないのかわかりませんので、教えてください(・Θ・) (2012-01-05 10:05:04)

あきよし】 というわけで、簡単な説明ページを作りました (2011-12-08 16:59:28)

あきよし】 このページでは、「タイガー計算機」の説明として、応用で簡単に平方根の計算ができる、ということを書いています。平方根計算を易しく解説するページではないので、ご了承を。しかし、要望が多いので、近いうちに解説ページを別に作ろうかとは思っています。今年中をめどに書いていますが、確約はできません… (2011-12-06 09:47:06)

【美琴】 もうちょっと簡単な説明はありませんか?? (2011-12-05 00:10:07)

【美琴】 今私中一なんですけど・・・。ちょっとあまりわかりませんでした。やっぱり少し難しいですね。 (2011-12-05 00:07:46)

【平方根】 わからない (2011-12-03 19:34:09)

【さる】 気持ちいい~~! (2011-10-08 21:27:39)

【ゆっち】 全く理解できないおばかなんですけどw (2011-08-22 13:54:04)

【れいしろう】 すっごいです! (2011-06-06 18:07:33)

【もり】 最初なぜ2桁で区切らねばならないのか分かりませんでしたが、やっと納得できました。とても面白い内容で楽しめました! (2010-11-27 18:15:29)

【べあー】 ありがとうございました♪ (2010-11-11 17:22:19)

あきよし】 √2の30桁までの計算、計算手順を別ページに掲載しました。これでどうでしょう? (2010-11-03 16:36:30)

あきよし】 了解。>べあーさん  面白そうだからやってみます。が、忙しいので後日。 (2010-11-02 10:14:38)

【べあー】 いくらやっても計算が合わないので、√2を30桁までやってもらえませんか? (2010-11-01 17:19:19)

【むーさん】 わかりました!ありがとうございます。 (2010-10-28 15:48:15)

あきよし】 それであってます>むーさん (2010-10-28 10:51:40)

【むーさん】 質問です。100-101=になったときのずらし方はどうすればよいのでしょうか?次の引かれる数は10000になり、引く数は1021になりますか? (2010-10-27 17:47:10)

あきよし】 4月5日のこのページのコメントに書いたとおり、数学談義はページの目的ではないです。 (2010-08-16 10:28:45)

【筑附中】 平方根のほかに、リーマン面を教えてください (2010-08-12 18:30:04)

【hide】 なんか感動しました!!! ありがとうございます (2010-07-28 23:43:25)

【中3】 何となく理解できました。レポートの参考にさせていただきます (2010-06-26 19:09:05)

【揚羽】 ニュートン法やホモトピー法以外にもこんな面白い方法があったとは知りませんでした。ますます数学が好きになりそうです。ありがとうございました (2010-05-23 01:17:26)

【双麗蝶】 すごく役に立ちました!これで、置いてかれずにすみます。ありがとうございます (2010-05-14 19:38:22)

あきよし】 「このページ」の目的は、タイガー計算機の説明。「魔法使いの森」全体は、僕の趣味を自分の記憶の定着と人への紹介を目的として書いているもの。主に電子計算機と歯車機械、キャンプと料理のページなので、「数学談義」は入れていません。自分は数学好きだけど、人に語れるほどの知識量がないためです。 (2010-04-05 13:42:01)

【香取ーん】 お、恐れ入りました。しかし、そもそもこのページの(他のもそう)趣旨ってなんなんですか?目的って何? (2010-04-02 18:27:17)

あきよし】 小学5年生だから、は言い訳になりませんよ。自分も数学好きなので、ご質問の件を解説しろといわれればできるでしょうが、しません。理由は2つ。1.このページの目的から外れる。2.解説しているページは他に山ほどあるので、僕が書く必要はない。 (2010-03-24 09:53:40)

【香取ーん】 書ききれなかったため、二つに分けます!(2)平方根関連で、三平方の定理の超詳しい解説のページも作ってください!(僕は、小学五年生ながら基礎は出来てます。もちろん基礎もですが、応用も載せていてくれると嬉しいです) (2010-03-21 14:49:25)

【香取ーん】 初心者のために、「そもそも平方根ってこんなもんやー!」とか、「ルート(√)ってこんなもんやー!」みたいなページを作ってみては? (2010-03-21 14:46:04)

【香取ーん】 ありがとうございました!小学五年といっても、数学と物理には興味があります。まーまだかけだしですけど・・・(^-^:) (2010-02-27 19:00:28)

あきよし】 書いてあるとおり「2桁づつ区切って」計算します。3桁以上、8桁でも9桁でも同様です。 (2010-02-26 11:04:57)

【香取ーん】 3桁までは2つに分けるのは分かりましたが、これが8桁や9桁になったらどうするんですか?詳しく教えてください。(なにせ、小学5年生ですから) (2010-02-25 20:33:34)

あきよし】 3桁以上を求める方法は最初から載っているのですが… (2010-02-17 11:33:26)

【ss】 3けた以上のやり方の解説を載せといてください (2010-02-15 13:33:50)

あきよし】 …ページの頭から、説明をよく読んでください。これで理解できないなら、それ以上の説明はできないです。 (2010-01-14 17:27:58)

【HA】 √2の100 -21 =79は、なぜ21を引くのですか。 (2010-01-14 16:20:53)

【yaeko】 いま電気の勉強をしています。助かりました! (2009-09-21 22:58:00)

【ツムジ】 私も Ruby でコードを書いてみました。新しく追記された内容に関して、私の思うところも書いてみましたので、一度覗いて見てください。http://tsumuji.cocolog-nifty.com/tsumuji/2009/09/post-3e91.html (2009-09-04 21:35:40)

【あああ】 PGの勉強に役に立ちました ありがとうございます (2009-08-19 10:53:14)

あきよし】 その通りです。誤字指摘ありがとうございます。この解法を教えてくださった方のメールには正しく書かれていたのを、僕が天気ミスしていたようです。修正いたしました。 (2009-07-17 16:52:24)

【一葉】 √2の所の 3431 -2821 = 604 は 3431 -2827 = 604 ではないでしょうか (2009-07-16 11:10:25)

【あ】 わからない (2008-10-31 14:51:12)

東京電力 輪番停電
第5Dグループ地域で サーバーを運用して
おります。
停電時の停止を
御了承ください。
(当面掲示を残します)

Loading