2009-10-31[n年前へ]
■自分で納得するまで考える。それが大事だと僕は思っている
結城浩「数学ガール 」の「相加相乗の平均の関係」から。
「好きなことをしっかり追い求めていくと、本物と偽物を見分ける力も付いてくる。いつも大声を出している生徒や、賢いふりをする生徒がいる。きっとそういう人たちは、自己主張が好きで、プライドが大事なんだ。でも、自分の頭を使って考える習慣があって、本物の味わいを知っているなら、そんな自己主張は要らない。大声を出しても漸化式は解けない。賢いふりをしても方程式は解けない。誰からどう思われようと、誰から何と言われようと、自分で納得するまで考える。それが大事だと僕は思っている」
2010-08-23[n年前へ]
■離散化した「微分方程式」を描いて遊ぶのにお勧めなプログラミング言語は何でしょうか?
ふと思い立ち、とある技術雑文を書き始めました。内容は、適当な物理現象のふるまいを数式で記述して、その動きを把握すると同時に・その物理現象をどのように制御したら良いのかを考えてみよう、というものです。
物理現象のふるまいを記述し・解析してみようとする時、とりあえず簡単な方法として「微分方程式モドキを書き、その動きを眺めてみる」というものがあります。「一瞬のふるまいを記述する」ような微分方程式や、差分方程式や、あるいは、漸化式のようなものをまずはラフスケッチのように描いてみて、あとは、初期条件を決めることで「すべての瞬間のふるまい」を追いかける、というようなやり方です。そして、その動きを眺めてみるわけです。
…すると、そんな作業は、数列(というかベクトル列)を再帰的に解かせる記述をする作業になることも多いように思います。そんなとき、実際に計算もさせつつ、そんな記述を行うときには、一体どんなプログラミング言語が良いのだろう?とふと考えました。…なぜかというと、再帰的な定義式を書いたあとに、計算速度向上やオーバーフローを防ぐために、いつもそのコードをループ文で書き直す作業をしていることにようやく気付いたからです。…こんな作業は(自分でやらずとも)自動的に行ってくれる処理系は絶対あるはずだ、ということにようやく今更ながらに気付いたのです。
再帰的なコードを書いたら、あとはそれをループ処理に変え最適化を行ってくれる「いわゆる末尾最適化」をしてくれるプログラミング言語にはどんなものがあるのでしょう?Scheme、Haskell…それともそれ以外の何かでしょうか。離散化した「微分方程式」で遊ぶのにお勧めのプログラミング言語は何でしょうか?