« ヤエムグラ | トップページ | ミヤコグサ »

2015年1月22日 (木)

√2 の話:その12:√2の求め方。★Simpleな考え方:その1

★これまで、なんやらかんやら、√2がらみ、あるいは黄金数・白銀数などにからむ話をしてきましたが。
・√2ってそもそもどうやって求めるんだ?
電卓の「√キー」を押す、というのはこの際ナシです。

★Simpleな考え方:その1
・ルート2って、自乗すると2になる数なんでしょ。
・1を自乗しても1だから、ルート2は1より大きい。
・2を自乗すると4だから、ルート2は2より小さい。
・1に戻って0.1ずつ増やしてみよう。
・1.1^2 = 1.21
  1.2^2 = 1.44
  1.3^2 = 1.69
  1.4^2 = 1.96
  1.5^2 = 2.25
 そうか1.4と1.5の間の数なんだ。
・1.4に戻って0.01ずつ増やしてみよう。
  1.41^2 = 1.9881
  1.42^2 = 2.0164
・1.41から0.001ずつ増やしてみよう
  1.411^2 = 1.990921
  1.412^2 = 1.993744
  1.413^2 = 1.996569
  1.414^2 = 1.999396
  1.415^2 = 2.002225

こうやって、ルート2に迫っていくことができますね。
Root2
黄色く着色したところが自乗したら2をオーバーしたというところです。

この考え方をそのまんまプログラムとして書いてみましょう。

●出発点と歩幅をまず決めます。
出発点=0 歩幅=1{0より大きな有理数に対応したいので、出発点は「0」としました。}
出発点から歩幅分大きくして自乗してみます。
2より小さければ、同じ歩幅で進みます。
2より大きくなったら、一歩戻って、歩幅を1/10にしてまた進みます。
・・・(以下同文)
これを繰り返していけば、ルート2にどんどん近づいていけるはずですね。
ただ、「以下同文」だけだとプログラムが止まりません。プログラムというものは必ず止まらなければならない、というのは絶対的なことです。
今回は、歩幅が限界として設定した値より小さくなったら終了とします。

********************
!一歩ずつ進む。平方根のみに対応
!nは整数でなくても可

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

INPUT PROMPT "n = ": n        !平方根を求める数を入力
LET stp =1                             !最初の歩幅は1
LET d = 1E-10                       !精度
LET a = 0                               !出発は0から
DO
   LET a = a + stp                    !一歩進む
   IF a^2 > n THEN                   !自乗してnより大きかったら
      LET a = a - stp                 !一歩戻って
      LET stp = stp/10              !歩幅を1/10にして
      PRINT a                           !途中経過をプリントして
   END IF
LOOP WHILE(stp >= d)           !精度の限界に達していなければDOから繰り返す
PRINT
PRINT a                                !結果をプリント

END
********************
実行してみます。
n = 2
1
1.4
1.41
1.414
1.4142
1.41421
1.414213
1.4142135
1.41421356
1.414213562
1.4142135623

1.4142135623
いいですね。

n = 2015
44
44.8
44.88
44.888
44.8887
44.88875
44.888751
44.8887513
44.88875137
44.888751374
44.8887513749

44.8887513749
でかい数はどうだ。今年の西暦を入れてみましたが大丈夫。

n = 0.5
0
.7
.7
.707
.7071
.7071
.707106
.7071067
.70710678
.707106781
.7071067811

.7071067811
0<n≦1 でも大丈夫。

ダイジョウブですね。目論見通り動いています。
平方数入れてもいいのか?
n = 9
3
3
3
3
3
3
3
3
3
3
3

3
ま、いいでしょう。無駄といえば無駄なことをやってますが、ちゃんとプログラムが停止するから良しとします。
{下手すると、無限ループに陥って、コントロールが返ってこないなんて事もありますから、いろいろチェックしなければなりません。}

★まず第一歩は踏み出しました。これからいろいろ考えていくことにします。
乞御期待。

« ヤエムグラ | トップページ | ミヤコグサ »

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

コメント

コメントを書く

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

« ヤエムグラ | トップページ | ミヤコグサ »

2021年5月
            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 31          
サイト内検索
ココログ最強検索 by 暴想
無料ブログはココログ