理工系の数学入門コース8 数値計算

1984の翻訳者のサイトはとても面白い。プログラマーであったりもするらしく、憧れだ。↓

どうやら似たシリーズのようだ。
一通り目を通してみたが、さすが数学シリーズというだけあって数式がちゃんと書いてある。これは確かに最初はプログラミングをほかの分野(力学なり、電磁気学なり)のように学びたい人にとっては最適化もと思った。

PAD(problem analysis diagram)という、流れ図に変わる手順図示の方法が随所で使われている。プログラミングはその手軽さから今でこそ始めるのは非常に簡単だ。最近は環境構築なんてしなくてもGoogle アカウントさえ持っていればすぐにPythonが使えてしまう。

しかしながらプログラミングの難しいところはそこではなく、(もちろん環境構築は大変めんどくさいものではあるが)アルゴリズム的な思考法である。他の勉強をしていればそんなにとっつきにくくはないが、新しい道具を使うときはよくつまずく。そういうときに少しでも負担を軽くという思いで作られたのだろう。

ニュートン法の収束の話から、もしかしたらちょっと収束地図みたいな話になるかと思ったが、ならなかった。ただ、複素数を変数に持ってこれる前提の書き方なあたりはFORTRANを想定して書いてそうな節を感じられる。

積分の数値計算って実はあんまりやったことがない。授業で必要になったときはなんかExcelで台形積分っぽいことをやって切り抜けたような。
そもそも積分にはあんまり需要がないのだろうか。物理という分野にいると、解くのはもっぱら微分方程式であり、物理量の時間発展を見ている。しかしそれもある意味積分なのではないだろうか。だって常微分方程式があって、その時間時間での変化を足し合わせているわけなのだから。そう考えると、微分方程式を解くプログラムと、積分を行うプログラムって本質的な違いはどこにあるのだろう。

df/dx=g(x)の形で離散化するのが微分方程式を解く場合で、f(x)=∫g(x')dx'の形でやるのが積分のプログラムということだろうか。そしたら少し納得だ。

プログラミングといえば、面白い話がある。

プログラマの三大美徳
ラリー・ウォールによれば、プログラマの三大美徳とは次の通りである
怠惰(Laziness)
短気(Impatence)
傲慢(Hubis)
プログラマに必要とされる効率や再利用性の重視・処理速度の追求・品質にかける自尊心を言ったものである。
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AE%E4%B8%89%E5%A4%A7%E7%BE%8E%E5%BE%B3

プログラミングを学ぼうとして学べる人はそもそも他の分野でもきちんと学ぶことができてそうである。
想像を絶するほどの怠惰で全く勉強が続かないタイプがそれを逆に長所ととらえてプログラミングを勉強すればさぞかしうまくいきそうだ。

この記事が気に入ったらサポートをしてみませんか?