« 巨大なカラストンビの化石 | トップページ | 桜桃が咲きました »

2015年3月 6日 (金)

√2 の話:その30 真値を挟む範囲について:1

★ニュートン法で平方根を求めるときのプログラムの初めの一部分です。
--------------------
! ニュートン法によって平方根を求める
・・・
INPUT PROMPT "n =" :n
IF n >=1 THEN
   LET x = n
ELSE
   LET x = 1
END IF
・・・
--------------------
√nを求めるので、プログラムはnの入力をユーザーに求めます。
それにつづくif文は、ニュートン法を開始する最初のx0の決定です。
ニュートン法で平方根を求める場合、真値より大きい側から始めた方がいい。それも本当はなるべく真値の近くから。
nが1より小さい場合は、これはもう1から出発するしかないでしょう。
では、nが1より大きい場合は?
どんなnが入力されるかわからないのですから、固定値を設定するわけにはいきません。
その固定値より大きなnを入力されては困る。
で、恐ろしく甘い見積もりで
√n < n
と見積もったのですね。
これなら大丈夫。必ず真値より大きい側から出発できます。
でも、見積もりが甘いよなぁ、という感はぬぐえませんが。

★はさみうち法では、a<真値<b という形でaとbを定めます。
で、ここでも甘い見積もりで、左側のaを0にし。
右のbは、n>1ならb=n、そうでなければb=1として計算に入ります。

!Hasamiuti
・・・
INPUT PROMPT "n = ": n
LET a = 0
IF n > 1 THEN
   LET b = n
ELSE
   LET b = 1
END IF
・・・
--------------------
★二分法もまったく同じ状況。

!二分法
・・・
INPUT PROMPT "n = ": n
LET a = 0
IF n > 1 THEN
   LET b = n
ELSE
   LET b = 1
END IF
・・・
--------------------
割線法では、真値<a<b として、最初の割線を求めます。

!割線法(secant method)
・・・
INPUT PROMPT "n = ": n
LET a = n
LET b = n + 1
・・・
--------------------
そこで、甘い見積もりでa=nとし、更にその右ということでb=a+1として計算を始めました。
これで論理的には問題ない。ちゃんと計算できます。それはすでにお目にかけてきた通りです。

★グラフで見てください。
X_sqrx
y=x と y=√x のグラフを一緒に描いたものです。
一目瞭然。
0≦x≦1で、x≦√x
1<x で、   √x<x
ですから、n>√nを甘い見積もりとして使うことは論理的には間違いではない。

★馬鹿話をひとつ
X2sqrtx
上のグラフにさらに y=1.1・√x のグラフを重ねたものです。
y=√xのグラフより常に1.1倍大きいのですから、n と見積もるよりはきつい見積もりになる。
まあね。
でも、今、平方根を求めるという原理的なプログラムを書いているのに、言語に備え付けの「平方根関数」を使うなんて、どうみてもアホですよね。悪い冗談だ、同義反復より悪いくらいだ。

★こんなことがずっと頭の片隅に常在していたら、ふと思いついたことがあります。
その中身は次回。(もったいぶってら)

« 巨大なカラストンビの化石 | トップページ | 桜桃が咲きました »

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

コメント

コメントを書く

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

« 巨大なカラストンビの化石 | トップページ | 桜桃が咲きました »

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 暴想
無料ブログはココログ