Python数値計算入門まえがきの下書き

 次年度の「数値解析1」のテキストを新たに作る予定なので,「まえがき」っぽいものを書いてみた。ろくすっぽ書いてもいないくせに完成稿を目の前にしたかのような文章を書くのは自分にプレッシャーをかけるためである。年内には下書き終了,完成は来年2月の予定だが,さてどうなることやら。


 本書はPython 3のNumPyおよびSciPyを利用することを前提に,数値計算の基本を解説したテキストである。浮動小数点演算の基礎から,偏微分方程式の数値解法まで,Pythonスクリプトを動かしながら理解するというコンセプトで執筆したつもりだが,果たしてその目的が達成できているかどうか,その判断は読者に委ねたい。
 ベースとなっているのは「ソフトウェアとしての数値計算」(https://na-inet.jp/nasoft/)で,2009年までに積み上げてきた講義資料に基づく公開Web教材である。完成以来10年経つと,さすがに記述が古びてくるので,書き足すなり書き直すなりする必要を感じていたところ,奇特な方から「Python本を書きませんか?」というお誘いがあり,自分としても近年最も勢いのある動的言語を本格的に使ってみたい欲求があったので,ホイホイと誘いに乗って古い講義ノートの虫干し作業がてら,書き出し始めたのである。
 実は著者の勤めている大学ではMATLABという,高価だが信頼性の高い数値計算ソフトウェアのサイトライセンスを導入しており,ここ数年はExcelとMATLABを使いながら講義を行っていた。しかし,MATLABのライセンスは卒業すると消滅してしまう。何より,高価なソフトウェアの癖に更に銭を取られる有料パッケージが存在していたりするのが気にくわない。Pythonならば基本,著名なパッケージは無料で使える。これは大きい。
 何より,PythonではDeep Learning用のTensorFlowやPyTorchすら無料で使えるのだし,これらの下支えとしてNumPyやSciPy,Autograd等の基本数値計算パッケージが存在している。今の時代向きの「ソフトウェアとしての数値計算」はこれらの基本数値計算パッケージを前提として語るべきであろう。
 ということで書き出したのはいいのだが,内容的に古い所があり過ぎて,全面改稿したりバッサリ削除した章が続出し,当初の予定通りにはなかなか進まなかった。著者の個人的な事情もあり,遅れに遅れて何とか次年度のテキスト印刷期限に間に合ったという次第である。それでも,不慣れな言語に四苦八苦しながら,良く出来た数値計算パッケージと戯れるのは楽しい作業であり,関数を呼び出すだけで面倒な処理がスイスイできるようになったのを体験するにつけ,時代は進んでいるなぁと,スクラッチから自分の数値計算ライブラリを構築してきた年寄としては感慨深い。その分,数値計算の初心者にとっては敷居が高いと感じるかもしれないが,折角先人が積み上げてきたソフトウェアの上に立つことができている状況を楽しむためには,その高みに親しむことも必要であると,あえて手加減せずに具体的な問題を提示してみたのである。実際に動かせるスクリプトを目の前に突き出しているのだから,大いにチャレンジして頂きたいものである。