12/22(日) 駿府・曇後雨

 なかなか気候が安定しないまま冬至になってしまった。北日本では平年並みの寒さだが,寒気が関東周辺で止まっているらしく,東海地方は冬という実感が,特に日中は感じないほどポカポカしている。今週ようやくグッと冷え込むようだが,インフルエンザも急激に流行しそうである。一応,予防注射は行ったが,ワクチン効果があるうちに流行がさってくれることを祈るのみ。

 先週は年明けまでの一仕事を模索する毎日であったが,何とか目標が見つかったので,この年末年始に頑張ってみることにする。神さんがご実家に張り付くので,ワシは正月,自作の旨煮と雑煮汁と共にひとり者生活を送ることになったので,プログラミング三昧の有意義な三ヶ日を過ごす予定なのである。予定通り進むかどうかは分からねど,仕事納め後に早速取り組むことにしよう。どうなりますことやら。

 つーことで,年末年始の一仕事前にPython数値計算入門をに区切りをつけねばならぬ。何とかスクリプトは無理やり突っ込んだものの,古いテキストに張り込んだだけではどうにも納まりが悪い。とはいえ,高度なSciPyのルーチンのオプションまで全部解説することなぞスペース的に無理であるから,多少不自然でも凸凹を平滑化するよう努力するしかない。予定では25日(水)までは悪あがきして,先方に送りつける予定。ODEの境界値問題とPDEについては年明け,2月から3月にかけてシコシコやりまする。暫しお待ちを。

 2019年の締めくくりをすべく,今週の仕事納めまで頑張って駆け抜けましょうぞ。自宅用の老眼鏡を作ったので,快適に仕事できるようになってありがたし。この日記の執筆もラクチンである。どーも目がチラつくと思ったら,眼鏡のせいであった。これからは還暦まで毎年のようにレンズ交換ぐらいはやらなきゃいかんのかのう。あー年寄りくさっ!

 神さんが出たので,今度はワシが風呂入って寝ます。

12/15(日) 駿府・晴時々曇

 北日本では平年並みの冬になったようだが,関東より南では生暖かい空気が残っているようで,朝晩はそれなりに寒いが,日中はヒートテックを邪険にしたいほどの陽気になる。ガッツリ寒くて雪が舞ってしまうほどになると入試に差し障りあって困ってしまうが,暖かい分にはまだマシではある。年末まではこの状況が続きそうなので,今年の年の瀬は,本学的には穏やかに過ごせると期待できるかな。

 Python数値計算テキスト,代数方程式のところは下記の通りなので,

予定通り,連立一次方程式用の反復法と,べき乗法,逆べき乗法の実装は終えた。チミっと調べてみたらLagrange補間もNumPyに既にあったので,既に作ってあるNewton補間と合わせて提示し,微積分はAutogradとNumPyのintegrateを紹介,ODEとPDE絡みについては一応埋めたので,年明けにどこまでできるか頑張ってみる・・・ということで年内のノルマはなんとかなるかなと。記述は荒っぽいので,2月以降はご意見聞きながら修正ということになるかなぁと。今後ともよろしくお願い致します。

 ここでも紹介したことのあるヤンデレマンガの著者が更新していたラブラブな4コマエッセイ漫画のサイト,記事更新が1年以上に渡って停止されており,どうしたのかなと訝っていたら,旦那側のblogからバツイチになったという報告があり,しみじみ中年男のひとり者マンガが更新されるようになった。奥様側は既に子供を連れて独り立ちされてしまったそうで,ワシとしては旦那より奥様の方の消息が気になるのだが,中年男の愚痴も嫌いではないのでTwitterrをフォローして日々読んでいる。自分もひとり者の頃を思い出してみると,夏より冬の方が独り身が寂しくなってくるし,年末年始は特にそれを強く感じるイベントが集中するので,まずはこの時期をやり過ごす術を身につけて欲しいと,ネット越しに応援している。ま,耐えられなくなったら婚活すればいいのである。バツイチに対して世間はかなり優しいのであるからして。

 つーことで,まだ今年の総括を書く段階には至っておらず,再来週の仕事納めまで頑張ります。今日は味噌ラーメン食って滋養つけることに汁。

12/1(日) 駿府・晴

 師走初日である。一気に寒くなって秋をすっ飛ばして冬になった感。富士山がきれいな季節になってしまったのである。

 「多倍長精度数値計算」,Amazonの順位を見る限り「LAPACK/BLAS入門」程度には売れているらしい。せいぜい初刷分のコストを吸収できる程度には在庫が捌けてほしいものである。黒字になって困ることはないからなぁ。高いけどよろしくお願い申し上げます。
 そーいや,早速誤字脱字のご指摘があったので,慌てて正誤表を追加した。こーゆー時にはやっぱりGitHubにサポート情報一切合切置いておくのは良い判断である。出版社が潰れてもファイルが残るというところが良い。いずれワシのサイトの情報は全部GitHub,ResearchGate,Researchmapに集約しておくことになるので,定年カウントダウンになったらボチボチやっておくことにしよう。

 「決算!忠臣蔵」を神さんと映画の日の本日見に行った。吉本興業バックアップ映画なので,そこそこ楽しめたが,クライマックスの討ち入りシーンがないというのはどーにも肩透かし感が拭えない。溝口健二の「元禄忠臣蔵」でも見るとするかな。大河ドラマでは「峠の群像」の伊丹十三,「元禄繚乱」の石坂浩二,いずれも良い殺されっぷりであった。ワシはあれが見たいのである。

 Python数値計算入門,とりあえず連立一次方程式の4章分の手前まで完成。問題はこの先で,LAPACK/BLASベースのSciPyを使う以上はせいぜい密行列用(scipy.linalg)と疎行列用(scipy.sparse.linalg)の2章にまとめてしまうのがスマートだと考えている。行列の固有値はその応用編という感じ。無駄に分厚くなるよりは,線型計算はカジュアルにお気楽に使いつつ,パフォーマンスと精度には気をつけてねという記述になれば良いかと。今月中にはここを何とかして一気に後半部分の下書きは完成させたいなぁ。

 ということであと一月頑張りましょうぞ。

幸谷智紀「多倍長精度数値計算」森北出版

幸谷智紀「多倍長精度数値計算」森北出版

[ Amazon ] ISBN 978-4-627-85491-8, \4200 + TAX

 いやぁ長かった長かった。本来なら昨年のうちに発売されているはずのものが,「可能な限り厚く書け」という方針に変更され,巻末のGNU MP(抜粋),MPFR(完璧),__float128(完璧)のリファレンスまで付録に付くことになってしまったからさぁ大変,シコシコ作業してどーにかこーにか248ページの,ワシの単著としては最大のページ数を誇るテキストが出来上がってしまったのである。担当編集者が途中交代したりして「こりゃ出ないかな?」などと疑心暗鬼になりつつも何とか今日の晴れの日を迎えたのだからとりあえずは良しとしよう。表紙のプログラムが本文で使っているC, C++プログラムとは似ても似つかぬものになっているなどと無粋なことをいう奴は嫌いなので無視することにして,ワシはこの分厚くてド高いテキストをしみじみ眺めて悦に入っているところなのである。

 そう,本書は高価である。税抜き4200円! 吉野家の牛丼並を10杯食える値段になってしまった理由はただ一つ,特殊過ぎて売れそうにないからである。・・・んなことは分かっている,だからペラい「LAPACK/BLAS入門」程度でいいんじゃないかという提案もしていたのだが,「あれじゃペラ過ぎて演習書としては物足りない」とぬかす向きがあったらしく,「どのみち売れないんだから,そんなら分厚くしてくれ」ということになった由。開き直った結果の高額書籍なのである。つーことで,長い数字並べてヘラヘラ楽しめる,そう,「π 円周率1,000,000桁表」などをお持ちの方に置かれましては是非とも座右に置かれることをお勧めしておく。何を隠そう,ワシも本書を座右にたくさん置いているのであるからして(当たり前だ),数字マニアにおかれましては,スクラッチからプログラミングする非効率さも知っておかれては如何かと思う次第なのである。

 そう,今時,多倍長計算,即ち,標準的な整数型(int, long)や実数型(float, double)を越える桁数の計算を四則演算レベルから作成するなどということは止めた方がいいのである。趣味で作るならご自由であるが,それにしても,GNU MP(GMP)やMPFR, QDといった高速かつ機能豊富なオープンソース多倍長演算ライブラリがタダで自由に使えるご時世に,それらの機能を一顧だにせずに唯我独尊的なプログラミングをすることは労力の無駄,車輪の再々発明よりたちが悪い暴挙と言わざるを得ない。本書はこれらのライブラリの解説と関数一覧(QDは初めてかしらん?),CやC++のプログラミング例を豊富に取り揃えて,あまつさえ,手間のかかるベンチマークテストまでやってお示ししているのであるから,買えとは言わないけれど(買ってくれると嬉しいけれど),スクラッチから多倍長精度プログラミングをやろうという方は一通り目通ししておくべきであると断言しておく。まぁ,Webの世界には既にこれらのライブラリをベースとした,MPACKみたいな高速計算ライブラリも多数あるので,そちらを見てもらうのも良いが,高度過ぎる複雑なライブラリを見るより,単純なCやC++テンプレート例を読んだ方が取り掛かりには良いのではないか・・・どうかは皆様で判断して頂きたい。ま,当面売り切れる本ではないので,多倍長数値計算をする必要が出てきたら,ちらとでも眺めて頂ければ幸いである。

 

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等の基本数値計算パッケージが存在している。今の時代向きの「ソフトウェアとしての数値計算」はこれらの基本数値計算パッケージを前提として語るべきであろう。
 ということで書き出したのはいいのだが,内容的に古い所があり過ぎて,全面改稿したりバッサリ削除した章が続出し,当初の予定通りにはなかなか進まなかった。著者の個人的な事情もあり,遅れに遅れて何とか次年度のテキスト印刷期限に間に合ったという次第である。それでも,不慣れな言語に四苦八苦しながら,良く出来た数値計算パッケージと戯れるのは楽しい作業であり,関数を呼び出すだけで面倒な処理がスイスイできるようになったのを体験するにつけ,時代は進んでいるなぁと,スクラッチから自分の数値計算ライブラリを構築してきた年寄としては感慨深い。その分,数値計算の初心者にとっては敷居が高いと感じるかもしれないが,折角先人が積み上げてきたソフトウェアの上に立つことができている状況を楽しむためには,その高みに親しむことも必要であると,あえて手加減せずに具体的な問題を提示してみたのである。実際に動かせるスクリプトを目の前に突き出しているのだから,大いにチャレンジして頂きたいものである。