Pythonの勉強をしている。本来、私はプログラミングをやったことはあるので、勉強していない人よりはわかりが速いはずと思っている。
しかし、よる年波には勝てず、記憶力が衰えてきており、Pythonで使用されている関数とか、いろいろのことが覚えられない。
そこで、簡単なプログラムを作りながら、Pythonを覚えていこうと思っている。まずは、平方根を求めるプログラム。
-------------------------------------
# X の平方根を求める
x = 3
#
rootnew = x
#
for i in range(10):
root1 = rootnew
root2 = x/root1
rootnew = (root1 + root2)/2
print(root1, rootnew, root2)
---------------------------------------------
平方根を求める方法では、学生時代にニュートン法という方法で平方根を求めた。詳しい説明はここでは省く。「ニュートン法」で検索するといくつかの説明のサイトが出てくるので見てもらいたい。
今回利用したのは京都大学の学生用Python教育の資料である。
「プログラミング演習 Python 2019」で検索するとでてくる。喜多一先生が作らたものである。私は資料の最初の部分はよく知っていることなので、読み飛ばして、早速プログラムが書かれているところを読むことにした。コンピュータの理解が乏しい人は読んでおくと良い。
プログラムを入力して、走らせると以下のような結果が出てくる。
xの値を色々変えてみると、それぞれの平方根が求まる。
======================= RESTART: C:\Work\kkex2.py ====================
3 2.0 1.0
2.0 1.75 1.5
1.75 1.7321428571428572 1.7142857142857142
1.7321428571428572 1.7320508100147274 1.7319587628865978
1.7320508100147274 1.7320508075688772 1.7320508051230272
1.7320508075688772 1.7320508075688772 1.7320508075688774
1.7320508075688772 1.7320508075688772 1.7320508075688774
1.7320508075688772 1.7320508075688772 1.7320508075688774
1.7320508075688772 1.7320508075688772 1.7320508075688774
1.7320508075688772 1.7320508075688772 1.7320508075688774
上のリストから見て、4回ぐらいループさせると、1.7320508という値が表示される。手書きで計算すると大変なところだが、Pythonを使えば瞬時に解が出てくる。
もちろん、Pythonは
3**(1/2)
ですぐに 「3」 の平方根を計算してくれるので、いちいちPythonでプログラムを作る必要はないのだが。
>>> 3**(1/2)
1.7320508075688772
私はプログラミングが面白いのは、結果を表示するための理屈を理解して、それをプログラムするところだと考えている。だから、どうして平方根が計算されるのかというのを理解するのも一つのプログラミング学習だ。
以下、それぞれの行に説明を入れてみた。
-------------------------------------
# X の平方根を求める
x = 3 まず、xを3にする。
#
rootnew = x rootnew を xと同じ値にする。
#
for i in range(10): 以下の4行の操作を10回繰り返す。
root1 = rootnew root1 を rootnewと同じ値にする。
root2 = x/root1 x を root1 で割って其の結果をroot2 に入れる
rootnew = (root1 + root2)/2 rootnew は root1 と root2の平均値にする
print(root1, rootnew, root2) root1、rootnew、 root2 を印刷する
---------------------------------------------
リストの下の4行の操作を繰り返していくと、root1 と root2 の間隔がだんだん狭まってくる。その感覚の中に rootnew はあるので、rootnew の値も正しい 3 の平方根の値に近づいてくる。 もちろん、root1 も root2 も平方根の値に近づく。
つまり、root1 と root2 の値も、rootnew の値に近づいてくる。
root2 = x/root1
の式を見れば良い。限りなく root1 と root2 が近づいてくるので、
x = rootnew**2
という結果に rootnew の値が近づいてくるのだ。
3の平方根は小数点以下無限に続く無理数なので、永遠に算出することはできないのだが、実用上は意味のある小数点以下の数字を得ることが出来る。
面白いことに x = 4 の場合でも、root1, rootnew、root2 の値はすぐに 2.0 にならず、数回の繰り返しで値が固定する。
==================== RESTART: C:\Work\kkex2.py ======================
4 2.5 1.0
2.5 2.05 1.6
2.05 2.000609756097561 1.9512195121951221
2.000609756097561 2.0000000929222947 1.9993904297470284
2.0000000929222947 2.000000000000002 1.9999999070777095
2.000000000000002 2.0 1.9999999999999978
2.0 2.0 2.0
2.0 2.0 2.0
2.0 2.0 2.0
2.0 2.0 2.0
>>>
2020年5月16日土曜日
登録:
コメントの投稿 (Atom)
絶景の空中ドライブ!嵐山・高雄パークウェイ体験記(10月上旬)
10月3日、京都の花園妙心寺を訪れた帰り道、嵐山・高雄パークウェイをドライブしてきました。 「行楽シーズンで京都市内はきっと混雑しているだろう」と考え、市内を歩くよりも山の中のドライブを選ぶことに。このドライブウェイの存在は初めて知ったのですが、ネットで調べると景色が良さそうだ...

-
GoogleはChromeのバージョン101をリリースした。 新しいバージョンは以下の手順で入手できる。 Chromeの画面で、右上の縦の3つの点をクリックし、出てきたリストから、「ヘルプ」を選択すると、リストが出てくる。そのリストの中の「Google Chromeについて」を...
-
絵画展で素敵な作品を見つけて撮影したのに、斜めから撮ったせいで台形になってしまった…なんて経験はありませんか? そんな時に便利なのが、無料のWebアプリ「Photopea」です。Photopeaを使えば、台形に写ってしまった絵画を簡単に長方形に補正することができます。 ここでは...
-
11月03日(日)付の毎日新聞に掲載されている辛口数独の解き方を説明する。唐辛子のマークが5つついており、たいへん難しい問題という表示になっている。 問題は上のようなものである。 とりあえず、簡単にわかるところだけを埋めてみる。以下のようになる。 これ以上は単純な考え方だけでは...
0 件のコメント:
コメントを投稿