趣味として表記の内容の光学現象を Mathematica を使ってシミュレーションし HP を立ち上げました。 具体的テーマはオリジナルなものもありますが OSA (アメリカ光学会) が無償で公開している OpticsExpress (アメリカ光学会の学術雑誌) 等から取り上げています。
Mathematica の利用歴は長いですが、用いたコマンドも限られていますので深く理解しているとは言い難いです。 HP は分かっている結果がきちんと出てそれが視覚に訴えることを第一にプログラミングしました 。 そのため code は単純で速度等も考慮されていませんが、かえって初学者には分かり易いかも知れません。 これまで HP 上に載せたシミュレーションテーマの一覧を記しておきます。
また、いくつかのテーマで私がよく使った手続きとコードも載せておきます。
繰り返し処理の方法はたくさんありますが条件を入れやすく使いやすかったのが次に示す Label
を入れて条件を満たすまで Goto
で Label
に戻すものでした。 例として次のコードはレンズからの出射光を横から見た画面を得るものです。レンズからの距離をステップで変えその点の像を加算して作りました。
直径 180 の Disk レンズを含む矩形 fnar の Dimensions = {360, 360}, 波長 λ = 1, 波数 k = 2 Pi/λ, 焦点距離 ff = 200*λ, 距離の最小値 zmin = 50*λ, 最大値 zmax = 400*λ, ステップ値 dz = 20*λ, 画像の中央値 k1 = 180 として
レンズは下にあり、くびれが焦点です。
ディープラーニングは WOLFRAM NEURAL NET REPOSITORY に掲載の "Pix2pix Photo - to - Street - Map Translation" のコードを主に利用して行いました。
その他テーマの名称から推定されますようにいろいろ面白い働きをするプログラミングを載せています。公開されている Wolfram Research の REPOSITORY や Google Colaboratory から借用したものもありますが、その他はほぼ独自に試行錯誤しながら作りました。それについては私の HP を見ていただきたいと思います。
Mathematica の良さの一つはコマンドが意味のある言葉でできているため、他の人が書いたプログラムを理解するのが比較的容易であることと思います。このことを前提に私の HP には使ったコードをすべて載せています。Mathematica に対して初学者の皆さんに使ってみようとする動機づけになれば幸いと思います。
※編集者注:本ブログ掲載に関して、畠山巖様のご協力に感謝いたします。