久しぶりに書き込ませて頂きます.平方根の開閉について教えていただきたいことがあります.
というサイトで,平方根の開閉をするための手続きは理解したのですが, この手続きで何故正しく平方根の開閉ができるか,という理屈がわかりません.
何故こうするとできるのか.という理屈を教えてください. よろしくお願いします.
「開閉」じゃなくて「開平」だと思いますが・・・ 次の説明が参考になるのではないでしょうか.
横から失礼します. yama さんが紹介された yosshy さんのサイトに書かれているとおりなのですが,<b>なぜ2桁ずつ区切るのか,なぜ左側で変な足し算をするのか</b>,次のようにしてみると見えてくるでしょう.
(a.bcd…) 2 =(a+b/10+c/100+d/1000+…) 2 =a 2 +(2a+b/10)・b/10+(2a+2b/10+c/100)・c/100+(2a+2b/10+2c/100+d/1000)・d/1000+… =a 2 +(2・10a+b)・b/100+(2・100a+2・10b+c)・c/10000+(2・1000a+2・100b+2・10c+d)・d/1000000+…
「割り算部分」 の左側で <b>桁を右にずらした (=10で割った) 商を2度加えていく</b> 方法をなぜ行うかが見えましたか?
山旅人様の内容ですんでいるのでしょうが対応を見るのにはちょっとしんどいという気がします.yama様の示されているURLでは同じような多項式表現と並べて作業手順が示されていいます.でもどちらの表現も私には二乗の多項式がハードルです.私が訊かれたときには逐次近似の作業手順で答えています.内容は同じなんですが書かせて頂きます.
yama様の方のURLに√3が例に出ていますから√3を求めるとします.対応して頂くと分かりやすいでしょう.
1桁ずつ求めていきます. √3=a.bcd・・・とするのは同じです.このa,b,c,d,・・・を順番に求めていく手順です.この手順が開平の割り算風の手順にピッタリと対応しています.
a=1ですから√3=1+0.1xです. 両辺を2乗します. 3=1+0.1・(1+1)・x+0.01x^2 3−1=2=0.2x+0.01x^2 です.両辺を100倍します.
200=20x+x^2 =(20+x)x(式1) x=b+0.1yです.bは式1の右辺に入れて200を越えない最大の整数です.b=7です.x=7+0.1yを代入します. 200=(20+7+0.1y)(7+0.1y) =(20+7)・7+(20+7+7)・0.1y+0.01y^2 27・7=189を200から引いて100倍します.
1100=340y+y^2 =(340+y)y(式2) y=c+0.1zです.cは(式2)の右辺に入れて1100を越えない最大の整数です.c=3です.y=3+0.1zを代入します. 1100=(340+3+0.1z)(3+0.1z) =(340+3)・3+(310+3+3)・0.1z+0.01z^2 343・3=1029を左辺から引いて100倍します.
7100=3460z+z^2 =(3460+z)z(式3) z=d+0.1uです.dは(式3)の右辺に代入して7100を越えない最大の整数です.d=2です.z=2+0.1uです.
以下同様です.きちんと対応が付いています.
逐次近似ですから手順をプログラムにすることは難しくないと思います. 1桁ずつ整数を求めていますので求めた範囲の数値には信頼性があります.10回やれば10桁求められます. ニュートン法も逐次近似です.一度にたくさんの桁が求まります.収束は速いようですが収束の確認が必要です.