next up previous
Next: 6 より深い理解のために Up: 物理シミュレーションの手法と結果の検証 Previous: 4 多体問題

5 床とボール

これまで扱ってきたのは全部ハミルトン力学系で、運動エネルギーが保存する ような場合だったんだけど、最後にそうでない場合をちょっと考えてみましょ。 こんなのどうかしら。


\begin{displaymath}
\frac{d^2 \mathbf{x}}{dt^2} = \cases{
-g &($x>0$)\cr
-g-kx-\eta v &($x\le 0$)
}
\end{displaymath} (29)

柔らかい床にボールかなんかを落とした時にどう跳ねかえるかっていうのの一 番単純化した式ね。まあ、解析的に解けるんだけど、練習にはいいでしょう。

学生B:えーと、ちょっとまって下さい、これ加速度が不連続じゃないですか。

赤木: そうよ。なんか問題?解はあるでしょ?一意性だってあるわよ。

学生B:そりゃそうですけど、数値解は、、、 $x$ の符号が切り替わるところ で破綻しませんか?

赤木: まあ、だから、その辺やってみてって話よ。積分公式はとりあえずオイラー法と、2次のルンゲクッタと台形公式くらいを比べてみたら。シンプレクティックはとりあえず使えないから。

学生B:はあ、、、

赤木: 係数をどれくらいにするかも決めときましょ。$g=1$ として 、あと $k$ は大きくないとそれらしくならないから、 $10^4$ とかにしてお く?で、$\eta$ は 0 と 10 くらいとか。後、台形公式は本当はこれはこれで いろいろ特別な性質があるんだけど、ちゃんとそういう性質がでるためには陰 解法ででてくる方程式をニュートン法とかのちゃんとした方法で解く必要があ るの。これはちょっと大変だから、単純反復で いいわよ。

\begin{displaymath}
x = f(x)
\end{displaymath} (30)

の形の方程式を解くのに、
\begin{displaymath}
x_{new} = f(x_{old})
\end{displaymath} (31)

という形で繰り返し計算して、収束してくれたら嬉しいなっていう方法ね。

学生B:分かりました。

学生B:えーと結果ですが、まずグラフでもおみせするのがいいですよね。オ イラー法は図3 の通りです。これはまあ全然だめで、抵抗 が入ってる場合でも逆に振幅が増えています。ルンゲクッタや台形則では時間 刻みを小さくすればまあまあなんとか発散しなくなります。台形則のほうが多 少性質が良くて、大きい刻みがとれるみたいです。

Figure 3: オイラー法での軌跡
\begin{figure}\epsfxsize 6 cm
\epsffile{euler0.ps}\par\epsfxsize 6 cm
\epsffile{euler1.ps}\end{figure}

Figure 4: ルンゲクッタ法での軌跡
\begin{figure}\epsfxsize 6 cm
\epsffile{rk20.ps}\par\epsfxsize 6 cm
\epsffile{rk21.ps}\end{figure}

Figure 5: 台形則での軌跡
\begin{figure}\epsfxsize 6 cm
\epsffile{trap20.ps}\epsfxsize 6 cm
\epsffile{trap21.ps}\end{figure}

赤木: あら、なかなかちゃんとできてるじゃない。

学生B:でしょ。これは大変だったんです、、、

赤木: ところで、どう誤差がでるかってのは調べてみた?

学生B:ええ、グラフ 6上を見て下さい。ボールが空中にある時には全く誤差はなくて、地面で跳ね返る時にだけ集中して誤差が出ています。

赤木: あ、ちょっとまって、跳ね返る時にはどんなふうに誤差がでるの?

学生B:ええと、普通につもっていくんではないんですか?

赤木: まあ、そこを拡大してみてよ。

学生B:あ、はい、6下ですが、、、ああ、台形公式では x の符号が変わるとこ ろでしか誤差がでないんですね。

Figure 6: エネルギーの誤差
\begin{figure}\epsfxsize 6 cm
\epsffile{error.ps}\epsfxsize 6 cm
\epsffile{error2.ps}\end{figure}

赤木: そう。これは、実は台形公式にもシンプレクティック法と同じく ようにハミルトン系ではエネルギーの誤差がある程度以上は成長しないという 性質があるからね。台形公式はシンプレクティックではないんだけど、時間反 転に対して対称である、つまり、時間を逆に進めていくと厳密にもとに戻ると いう性質があるの。こういう時間対称な公式はシンプレクティックと同じよう にいろいろいいことがあるのね。

学生B:なるほど。

赤木: まあ、でも、あれね、いいことがあるからそれを使うべきといえ るかどうかというのは割合難しいところね。この例みたいに不連続性があるの はある意味一番ややこしい例なんだけど、この例そのものだったら本当は不連 続になる時刻が求められるから、そこにくるように時間刻みを調節すればいい わけね。ただ、こんなふうにボール1つならそれでいいけど、沢山ボールがあっ てそれらがお互いにぶつかったり跳ね返ったりしてるとそう簡単にはいかない でしょ。

学生B:そうですよね。そういう時はどうするんですか?

赤木: そうね、これはいろいろ調べてみたんだけど、なんかあんまりな にも考えていないみたい。オイラー法や2次の予測子・修正子法を使って、た だ時間ステップを十分短くしてすましているのが多いわね。

学生B:それってなんか力任せっていうか、もうちょっとスマートなやりかた はないかって気もするんですけど。

赤木: そうね、原理的には、例えば粒子毎にバラバラに時間刻みを変え るようなやり方もあるし、分野によっては使われていないわけじゃないけど、 そういうやり方の問題は、シンプレクティックとか時間対称とか、そういうい い性質がいま知られているやり方では保たれないということね。 シンプレクティックはそもそも時間刻みを変えることができないし、時間対称 な公式は時間刻みを変えられないわけじゃないけど、バラバラには変えられな いのよ。

まあ、割合原理的な問題として、どれくらい正確に計算する必要があるのか?っ てこともあるけど。ボールっていうと遊びみたいだけど、粉体のシミュレーショ ンでは実際に粒子同士がぶつかったり跳ね返ったりというのを計算するわけね。 でも、そこで割合一般的にわかってきているらしいことは、いろんなことが衝 突のモデルの詳細にはあんまり依存しないということなの。

学生B:その、「らしい」ってのはなんです?

赤木: 私が確かめたわけじゃないからね。まあ、それはともかく、もち ろん衝突して跳ね返った時にエネルギーが増えたりしたらだめだけど、減って いればどれくらい減るかは桁で違ってもあんまりなにが起きるかは変わらない とかね、そういうこともあるらしいの。まあ、そういう場合だと、そんなに真 面目に計算してもしょうがないわけね。

まあ、そうはいっても、そういうのが本当かどうかを確かめるためにはちゃん と衝突した時に何が起きるかを制御できないといけないし、そのためにはもち ろん精度がちゃんと制御できないといけないわけだからいい加減な計算でいいと いうことには結局はならないはずだけど。

学生B:はあ、そういうものですか、、、

赤木: そういうものよ。もうページもないみたいだから、とりあえず今 回はこれくらいにしましょ。またなんかあったらよろしくね。



Jun Makino
平成14年10月4日