Star Trek 映画に登場!
LINPACK, EISPACK や MATLAB で有名な Moler の講演が結構面白いです。
(以前 EISPACK の FORTRAN への移植についての Moler の講演を紹介しました。) fortran66.hatenablog.com
MATLAB は元々は Moler によって FORTRAN66 で書かれていました。その時 N. Wirth の Algorithms + Data Structures = Programs 中の PL/0 コンパイラ実装の章を読んでインタープリンタを作ったそうです。なお MATLAB のインデックスが 1 始まりになっているのは、Wirth のこの本の PASCAL の影響であり、数学では 1 始まりだからだと言っています。
Algorithms + Data Structures = Programs (Prentice-Hall Series in Automatic Computation)
- 作者:Wirth, Niklaus
- 発売日: 1976/02/01
- メディア: ハードカバー
Moler がスタンフォード大学で MATLAB を使った集中講義をやった時、数学やコンピュータ学科の学生は興味を見せなかったけれど、行列計算を実用していた工学部の学生が食いついて来たそうです。そのとき自分で FORTRAN のプログラムを組むのを止めて MATLAB を使いだした学生の中に、後に MATLAB を商用にして売ることを考えたジャック・リトルがいて、当時キラキラ言語だった C に移植して商売をはじめ、今に続くようです。
Moler が当時最先端のコンピュータ・グラフィックスを用いて SVD 分解の啓蒙映画を Los Alamos 研究所で作ったところ、宇宙大作戦 (Star Trek) の初代の劇場版映画に引用されたそうです。ミスター・スポックの背後に行列対角化中の映像がたしかに映っています。
【追記】10年前の記事にもあったw eetimes.jp
なお初代『スター・トレック』劇場版は、本邦においては尼さんマニアにとても高評価だった映画です。
FORTRAN 版 MATLAB
そんな FORTRAN 版の MATLAB が The Cyber Vanguard: Lazy Reading で紹介されていました。
http://cyber.dabamos.de/blog/#article-2021-05-07 から
元々 FORTRAN66 で書かれていたようですが、FORTRAN77 で動くようになっているようで、現今の Fortran でもコンパイルできます。
パーサー・インタープリタの所は、プログラムで再帰を実現しているようです。
無利用の捨て引数として配列にスカラーを渡したりしているので (FORTRAN は call by reference なので番地が渡りさえすればいい)、argument check を切らないと動きません。
HELP ファイルを実行ファイルと同じディレクトリに入れておけば HELP も使えます。
FORTRAN 版 MATLAB のマニュアルの例題が面白くて、過去の米国国勢調査の結果から 1980 年の米人口を多項式近似(Lagrange近似)で見積もっているのですが、Vandermonde 行列を使って外挿して解いて、指数関数などと比較してよく合うとみなしています。
ひとしきり計算した後に、多項式を方程式として解いてみせ 1984 年に解があるのでこの年にアメリカの人口が 0 になると結論してみせていますw 多項式近似はしばしば隅っこの方で飛び跳ねるのを使った面白ネタです。内挿にしておけとw
ifort
ifort matlab88.f90 -o matlab -nocheck
gfortran-10
gfortran matlab88.f90 -o matlab -std=legacy -fallow-invalid-boz
適宜 -O2 など最適化オプションを与えてください。
Moler の別動画に見易いスクリーンショットがあります。
ほとんど同じ持ちネタを話していますが、Star Trek は出てきません。
質疑の所で Python/SciPy などとの競合について問われています。Moler 答えて曰く MATLAB の値段が高すぎると言われるが、ではいくらの値段か?と問い返すと皆答えられない、結局ソフトウェアには金を払えないという思想の問題だと言い切っています。
またサポートの無いコロコロ変わるつぎはぎソフトウェアより安定が求められているとも言っています。トヨタが MathWorks の最大の顧客だとも言っていて、興味深いところです。
Computer Solution of Linear Algebraic Systems (Automatic Computation S.)
- 作者:Forsythe, George E.,Moler, C.B.
- 発売日: 1967/09/01
- メディア: テキスト
- 作者:Dongarra, J. J.,Bunch, J. R.,Moler, G. B.,Stewart, G. W.
- 発売日: 1987/01/01
- メディア: ペーパーバック