« ホソヒラタアブ | トップページ | チューリップ »

2015年1月29日 (木)

√2 の話:その16:√2の求め方。★ちょっと凝った考え方:その2「はさみうち法」

★結構、有名な方法でして、ラテン語で「regula falsi」、英語なら「false position method」というようです。
で、私はこの方法を以前から知ってはいるのですが、どうもピンと来なくって。
「はさみうち」という言葉の語感からすると、真値を両側から「はさんで」「追い詰めていく」感じがするでしょ。
それだけなら、Simpleな方法でやった区間を縮小しながら真値の両側を行ったり来たりするのだって「はさみうち」の感じがしますよね。
前の記事の「二分法」だって、真値の両側から詰めていきますよね。
ところが、この「はさみうち法」は片側から詰めていっているように感じるのです。

では√2についてはさみうち法を説明します。

Hasamiutisiki
関数は f(x)=x^2 - 2 です。
例によって、√2の真値を挟むように、aとbを定めます。
{具体的には、a=0、b=2でいいです。}
次いで、(a, f(a))という点と、(b, f(b))という点を通る直線を考えます。
この直線がx軸と交わる点をcとしましょう。
cの求め方は図の中に書き込んでおきました。

下に凸で単調に増加する関数ですから、cはaより真値に近い。
そこで、(c, f(c))という点と、(b, f(b))という点を通る直線を考え
この直線がx軸と交わる点を・・・

繰り返しができました。
こうやって次々と点を求めていけば、真値の左側からどんどん近づいていくことになりますね。
(b, f(b))は動いていません。
動かないbに対して、左からaが真値に近づいていくようです。
これって「はさみうち」なのか?
むしろ、流行語の「壁ドン」みたいだ。
bという壁があって、真値√2へaがぐ~んと近づいていくように、私にはイメージされます。
真値が、動かない壁と押していく近似値の挟み撃ちにあっている、ということかなぁ。
「false position method」を訳して「はさみうち」とはちょっと理解できないのですが。。

pincer attack:挟撃.
attack from both sides.:挟み撃ちにする

だよなぁ。(pincer はペンチのことです)

★ぐだぐだ言ってないで!プログラムっ!
********************
!Hasamiuti
DECLARE EXTERNAL FUNCTION f

!root(2) = 1.4142135623730950488016887242097
!root(3) = 1.7320508075688772935274463415059

INPUT PROMPT "n = ": n
LET a = 0
IF n > 1 THEN
   LET b = n
ELSE
   LET b = 1
END IF

FOR i=1 TO 100
   LET c = (a * f(b, n) - b * f(a, n)) / (f(b, n) - f(a, n))
   LET a = c
   PRINT i;   
   PRINT c;
   PRINT c*c
NEXT i
END
!******************************
EXTERNAL FUNCTION f(x, n)
LET f = x*x - n
END FUNCTION
********************

★結果
n = 2
1  1  1
2  1.33333333333333  1.77777777777777
3  1.4  1.96
4  1.41176470588235  1.99307958477508
5  1.41379310344828  1.99881093935792
6  1.41414141414141  1.99979593918987
7  1.41420118343195  1.99996498722033
8  1.41421143847487  1.99999399271316
9  1.41421319796954  1.99999896931123
10  1.41421349985132  1.99999982316172
11  1.41421355164605  1.99999996965933
12  1.41421356053263  1.99999999479438
13  1.41421356205732  1.99999999910685
14  1.41421356231892  1.99999999984677
15  1.4142135623638  1.99999999997371
16  1.4142135623715  1.99999999999549
17  1.41421356237282  1.99999999999922
18  1.41421356237305  1.99999999999987
19  1.41421356237309  1.99999999999999
この先もう、数値は動きません。計算機の限度ですので。
このプログラムは、平方根に対して小さい側から接近していますので、1.9999…となっていて正しいのです。

★1000桁モードで1000回ループを回すと
750桁を超える精度になっているようです。かなりのスピードですね。

1000
1.
4142135623 7309504880 1688724209 6980785696 7187537694
8073176679 7379907324 7846210703 8850387534 3276415727
3501384623 0912297024 9248360558 5073721264 4121497099
9358314132 2266592750 5592755799 9505011527 8206057147
0109559971 6059702745 3459686201 4728517418 6408891986
0955232923 0484308714 3214508397 6260362799 5251407989
6872533965 4633180882 9640620615 2583523950 5474575028
7759961729 8355752203 3753185701 1354374603 4084988471
6038689997 0699004815 0305440277 9031645424 7823068492
9369186215 8057846311 1596668713 0130156185 6898723723
5288509264 8612494977 1542183342 0428568606 0146824720
7714358548 7415565706 9677653720 2264854470 1585880162
0758474922 6572260020 8558446652 1458398893 9443709265
9180031138 8246468157 0826301005 9485870400 3186480342
1948972782 9064104507 2636881313 7398552561 1732204024
5091227700 2269331811 0235352311 9371249036 0837006797
3131736272 2567583670 3769236313 1347916386 7209581132
2553735283 5008955280 1861242166 5141262356 8477774182
8153651996 1698563615 2019805920 2965214759 4063330530
8574986335 1222964032 8417594077 1689264913 728730241

1.
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999999999 9999999999 9999999999 9999999999
9999999999 9999775239 8510328822 9113529343 4752431260
6895373343 8712712041 0756908124 3384798966 1477310689
7586249301 6387176716 2078782508 8224360968 0186711024
9878576780 1995680601 3165827338 2818969448 6597558876
4702196459 3112786131 4516952029 3672586468 4526119061
182278

« ホソヒラタアブ | トップページ | チューリップ »

理科おじさん」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« ホソヒラタアブ | トップページ | チューリップ »

2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ