hirax.net::inside out::2010年08月23日

最新記事(inside out)へ  |   年と月を指定して記事を読む(クリック!)

2010年7月 を読む << 2010年8月 を読む >> 2010年9月 を読む

2010-08-23[n年前へ]

離散化した「微分方程式」を描いて遊ぶのにお勧めなプログラミング言語は何でしょうか? 

 ふと思い立ち、とある技術雑文を書き始めました。内容は、適当な物理現象のふるまいを数式で記述して、その動きを把握すると同時に・その物理現象をどのように制御したら良いのかを考えてみよう、というものです。

 物理現象のふるまいを記述し・解析してみようとする時、とりあえず簡単な方法として「微分方程式モドキを書き、その動きを眺めてみる」というものがあります。「一瞬のふるまいを記述する」ような微分方程式や、差分方程式や、あるいは、漸化式のようなものをまずはラフスケッチのように描いてみて、あとは、初期条件を決めることで「すべての瞬間のふるまい」を追いかける、というようなやり方です。そして、その動きを眺めてみるわけです。

 …すると、そんな作業は、数列(というかベクトル列)を再帰的に解かせる記述をする作業になることも多いように思います。そんなとき、実際に計算もさせつつ、そんな記述を行うときには、一体どんなプログラミング言語が良いのだろう?とふと考えました。…なぜかというと、再帰的な定義式を書いたあとに、計算速度向上やオーバーフローを防ぐために、いつもそのコードをループ文で書き直す作業をしていることにようやく気付いたからです。…こんな作業は(自分でやらずとも)自動的に行ってくれる処理系は絶対あるはずだ、ということにようやく今更ながらに気付いたのです。

 再帰的なコードを書いたら、あとはそれをループ処理に変え最適化を行ってくれる「いわゆる末尾最適化」をしてくれるプログラミング言語にはどんなものがあるのでしょう?Scheme、Haskell…それともそれ以外の何かでしょうか。離散化した「微分方程式」で遊ぶのにお勧めのプログラミング言語は何でしょうか?