√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に迫っていくことができますね。
黄色く着色したところが自乗したら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
ま、いいでしょう。無駄といえば無駄なことをやってますが、ちゃんとプログラムが停止するから良しとします。
{下手すると、無限ループに陥って、コントロールが返ってこないなんて事もありますから、いろいろチェックしなければなりません。}
★まず第一歩は踏み出しました。これからいろいろ考えていくことにします。
乞御期待。
「理科おじさん」カテゴリの記事
- 化学の日(2022.10.26)
- 秒速→時速(2022.09.01)
- 風速75メートル(2022.08.31)
- 「ウクライナで生まれた科学者たち」(2022.05.31)
- 反射光(2022.05.09)
コメント