目を暮夜かしてものを見てみることも大事だ

というようなことをdeGennesがその著書の中で書いているけど、是迄僕はこのやり方がとても嫌いだったんですよ。方程式があったらそれをちゃんと正攻法で解けやと、無理ならせめて安定性を議論しろと、最初から最後迄厳密に。
でもそれだと現象の大枠は追えないわけで、なんとなく頭の中で簡略化して考えたところ、方程式の代表的な部分抽出すると数値計算のコーディングが楽になりそうだ。ということで、Young-Laplaceの方程式は、
  \gamma\left(\frac{1}{R_1}+\frac{1}{R_2}\right)=\Delta p
なわけだが、こいつを仮に、簡略化のために法線方向成分だけ考えて、ついでに表面張力係数もある意味おまけだから無視してみると、
  \frac{1}{R}=\Delta p
になって、二つの流体の外部と内部の圧力差によって法線方向の曲率半径は決まるわけで、おおざっぱに考えれば圧力差が与えられてしまえばどういう形の界面ができるかは予想できるわけですよ。そして觧は大概楕円積分だとか、楕円関数だとかになって、偏角を媒介変数にしないと解けないわけで。でもまあこれである程度の予言はできるわけで、それから本格的な議論に入ればよいと悟った。
ちなみにこれを思い付いたのは今朝目が醒めて布団の中で、「起きたくねーよー」と唸ってるときでした。
大概机の前で計算用紙だとかパソコンに向かってガンをくれていてもろくなことを思い付かないことが判明した。


凄い馬鹿なスペルミスに気がつきますたよ。(0,a)に中心がある半径rの円の軌跡(x,y)が満たす関係は*1
  x^2+(y-a)^2=r^2
なんだけど、プログラムの中に-aが入ってなかった。見事なまでに。っつーかここで見付かって良かった。


あとその他余り値の変わらない変数はstatic doubleにしてメイン文の外に追い出してグローバル変数にして間違いを減らそうと思ったんだが、何を外に追い出そうとしたのか忘れた。
そしてプログラムの基本は分割して、統治する。だということを再確認した。


ソーティングの部分外に追い出したらサブルーチンが前よりも見やすくなった。良かった。でもこれ以上改善するのは投入した時間的なコストをペイできないので止めてみる。最近グローバル変数の使い方を覚えました。
っつーか独学のプログラミングで論文書いて良いんだろうか?たまには人の書いたコードを見ないと物凄い独りよがりなことをやってそうでおっかない。その点でNumerical Recipesはかなり参考になるといえば参考になる。


何かポインタとグローバル変数を使えば、すごい邪道っぽいけど*2簡単なコーディングができそうだ。今日はもう疲れたのでまた明日やろう。兎にも角にも書類ができるまでに計算を終わらせないことには腹の虫の居所が定まらん。印鑑一個に1週間も待たせやがって。それより前に計算終わらしてやるぜ。そしてその後にはまた別の方法で計算して複数の方法での理論的なアプローチを可能にしてやる。
とかやってみたところで事務の人達を見返すことができないのは自明なことである。

*1:二価の関数と言っても良いかも知れない。でもそこまで厳密にはなれない。何故なら俺は純粋数学屋さんじゃないから。

*2:余り教科書的ではない。