hirax.net::Keywords::mathematicaのブログ

2008-04-30[n年前へ]

2008-05-04[n年前へ]

2008-06-24[n年前へ]

Mathematica Scrapbook

 Mathematica Scrapbook

Today is the 20th anniversary of the original release of Mathematica 1.0 on June 23, 1988.

2008-06-28[n年前へ]

「Mathematica開発者のウルフラム」と「ファインマン」

 今週頭に「数式処理アプリケーションのMathematicaが最初にリリースされてから、今日で20年たちました」と、開発者Stephen WolframからMathematicaユーザにメールが送られてきた。スティーブン・ウルフラムが28才の時の1988年の6月23日にMathematica 1.0 が出荷されたのである。

For twenty years we've pursued our long-term vision for Mathematica.

 Mathematicaは結局のところ、パターンマッチングを延々と行うプログラムである。データベースに登録されているパターン・規則にもどづいて、与えられた数式を置換していくことにより、Mathematicaは解(や所望の結果)を得る。

 ところで、「ファインマン物理学」で有名なR.P.ファインマンはカリフォルニア工科大学で1983年から1985年までの間、計算機科学の講義(ファインマン計算機科学)をしている。その頃の学生がスティーブン・ウルフラムである。

 ファインマンは「科学とは何か」の中で、「数学とはパターンにすぎない」「数学とはパターンを探すことだ」と端的に短く書き表している。この言葉を思い起こしながら、(おそらくそんな言葉を聞いていただろう)彼の学生でもあったウルフラムが「パターンマッチングによる数式処理アプリケーション」を商品化し市場に広まらせたのだ、と考えてみると何だか「面白い繋がり」を感じる。そんな繋がりを思い浮かべながら、Mathematicaの20年を集めたスクラップブック を眺めてみると、きっと楽しいと思う。

I'm looking forward to the next 20 years and hope that you'll continue to follow Mathematica on this exciting journey.

-- Stephen Wolfram

2008-07-09[n年前へ]

光スペクトル操作用のMathematicaライブラリ

以前、Mathematicaの演習用に作った「スペクトル操作用Mathematicaライブラリ」を少し直したので、ここ(”ColorLib_amature.nb”に置いておきます。以前作ったものと同じく、スペクトル・データをリストのような離散データではなくて、関数として(純関数=無名関数として、あるいは、明示的な関数として)取り扱うという点が特徴だと思います。「(せっかくMathematicaで解くのですから)解析的に解く」「使用者には離散化・数値計算など、面倒くさい汚い部分は見せない・見たくない」という方針で作ったものです。

以前のものからの変更点としては、"spectorPlot"や"labPlot""labColorPlot"など、関数名のMathematicaの命名規則に合わせた変更、加法混色・減法混色用関数の追加・グラフ表示関数の追加・バグ修正といったところです。

 最初のラフスケッチが、絵画の原理を自分なりにおさらいするためのものだったので、濃度変調・面積変調などを扱おうとする場合には、比較的簡単に・気持ち良く作業ができると思います。たとえば、下記のようなコードを書けば、D65光源のもとで、赤紫色の絵具を重ね塗りしていったときの色の具合を CIE Lab 空間で眺めたりすることができます。

labPlot[
 Map[lab,
  Table[transmissionSpector[D65,
magentaFilter, d],{d,0,10.0,0.1}]
]
];

 また、白色光照射時に黄色い絵具を塗り拡げる面積を増やしていった場合の反射光スペクトル変化をアニメーションとして作成・グラフ表示するコードはこんな感じです。"addtiveMixtureSpector"は加法混色用の関数で、"transmissionSpector"は減法混色用の関数です。お遊びソフトですが、色々遊ぶこともできるかもしれません。

Map[spectorPlot,
Table[
addtiveMixtureSpector[
{whiteLight,
transmissionSpector[whiteLight, yellowFilter, 1]},
{1-r, r} ],{r,0,1,0.1}]];
 コードを書く際に、Mahematicaで数式と文字列をシームレスに取り扱うことができたなら、もっと簡単に関数が書けるのにとも感じました。しかし、そういった感覚になるときは、たいていの場合「その道具の使い方・その道具を扱うプログラミングスタイルが間違っている」ことが多いものです。というわけで、Mathematicaプログラミングをまた勉強しなおしてみよう、と思ったのです。

スペクトル操作用Mathematicaライブラリスペクトル操作用Mathematicaライブラリスペクトル操作用Mathematicaライブラリ