fortran66のブログ

fortran について書きます。

【メモ帳】MATLAB の Moler の面白講演

Star Trek 映画に登場!

LINPACK, EISPACK や MATLAB で有名な Moler の講演が結構面白いです。

www.youtube.com

(以前 EISPACK の FORTRAN への移植についての Moler の講演を紹介しました。) fortran66.hatenablog.com

MATLAB は元々は Moler によって FORTRAN66 で書かれていました。その時 N. Wirth の Algorithms + Data Structures = Programs 中の PL/0 コンパイラ実装の章を読んでインタープリンタを作ったそうです。なお MATLAB のインデックスが 1 始まりになっているのは、Wirth のこの本の PASCAL の影響であり、数学では 1 始まりだからだと言っています。

Moler がスタンフォード大学MATLAB を使った集中講義をやった時、数学やコンピュータ学科の学生は興味を見せなかったけれど、行列計算を実用していた工学部の学生が食いついて来たそうです。そのとき自分で FORTRAN のプログラムを組むのを止めて MATLAB を使いだした学生の中に、後に MATLAB を商用にして売ることを考えたジャック・リトルがいて、当時キラキラ言語だった C に移植して商売をはじめ、今に続くようです。

Moler が当時最先端のコンピュータ・グラフィックスを用いて SVD 分解の啓蒙映画を Los Alamos 研究所で作ったところ、宇宙大作戦 (Star Trek) の初代の劇場版映画に引用されたそうです。ミスター・スポックの背後に行列対角化中の映像がたしかに映っています。


www.youtube.com

f:id:fortran66:20210513204425p:plain

f:id:fortran66:20210513204435p:plain

【追記】10年前の記事にもあったw eetimes.jp

なお初代『スター・トレック』劇場版は、本邦においては尼さんマニアにとても高評価だった映画です。

www.agonybooth.com

スター・トレックⅠ(字幕版)

スター・トレックⅠ(字幕版)

  • 発売日: 2013/11/26
  • メディア: Prime Video
スター・トレックⅠ (吹替版)

スター・トレックⅠ (吹替版)

  • 発売日: 2013/11/26
  • メディア: Prime Video

FORTRANMATLAB

そんな FORTRAN 版の MATLAB が The Cyber Vanguard: Lazy Reading で紹介されていました。

http://cyber.dabamos.de/blog/#article-2021-05-07 から

www.urbanjost.altervista.org

元々 FORTRAN66 で書かれていたようですが、FORTRAN77 で動くようになっているようで、現今の Fortran でもコンパイルできます。

パーサー・インタープリタの所は、プログラムで再帰を実現しているようです。

無利用の捨て引数として配列にスカラーを渡したりしているので (FORTRAN は call by reference なので番地が渡りさえすればいい)、argument check を切らないと動きません。

HELP ファイルを実行ファイルと同じディレクトリに入れておけば HELP も使えます。

FORTRANMATLAB のマニュアルの例題が面白くて、過去の米国国勢調査の結果から 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 など最適化オプションを与えてください。

f:id:fortran66:20210513214637p:plain

Moler の別動画に見易いスクリーンショットがあります。 f:id:fortran66:20210513215012p:plain


www.youtube.com

ほとんど同じ持ちネタを話していますが、Star Trek は出てきません。

質疑の所で Python/SciPy などとの競合について問われています。Moler 答えて曰く MATLAB の値段が高すぎると言われるが、ではいくらの値段か?と問い返すと皆答えられない、結局ソフトウェアには金を払えないという思想の問題だと言い切っています。

またサポートの無いコロコロ変わるつぎはぎソフトウェアより安定が求められているとも言っています。トヨタMathWorks の最大の顧客だとも言っていて、興味深いところです。

LINPACK Users' Guide

LINPACK Users' Guide

LAPACK利用の手引―行列計算パッケージ

LAPACK利用の手引―行列計算パッケージ

  • 発売日: 1995/07/01
  • メディア: 単行本