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)
Google Flowでチャイムの発声問題を解決!
先日このブログで、『チャイムの「お風呂が沸きました」という知らせに、「ありがとう」とお礼を言っている夫』という動画を作ろうとし、チャイムの発声が日本語でできないという話をしました。 チャイムが人間の言葉で「お風呂ができました」と喋る動画になってくれず、夫や妻の声でチャイムのセ...
-
元大蔵省(現在の財務省)官僚で経済学者の高橋洋一先生のYouTube動画、「自民党がAI提言 そもそもAIの実力はどうなの?実践してみた」を視聴しました。 この動画は、最新版のChatGPTを使用し、東京都区部消費者物価指数を題材に「AIが最近の物価動向をどこまで正しく理解し...
-
先日、友人から「大変なことになった」と緊迫した電話を受けました。 話を聞くと、ネットを見ていたら突然、 「システムが不審なアクティビティを検出しました。あなたのPCはTrojan(トロイの木馬)ウイルスに感染しており、個人情報や銀行口座のデータが流出する危険があります」 とい...
-
一昨日の内閣改造で入閣した片山さつき議員が認証式直前になって、着用するドレスが問題だと指摘されて、新しくドレスを購入するはめになったようだ。 毎日新聞などの記事によると、『2日午前に担当する内閣府から事前説明に訪れた職員が「上下同色のロングドレスで、(色は)シルバーなどが典型...
0 件のコメント:
コメントを投稿