広島県立広島国泰寺高等学校 理数ゼミ ソリューション班 研究テーマ 物理班が過去に行った、水中での 気泡の運動についての研究をより発展させるために 物理シミュレーションをつくる。 シミュレーションをつくるためには まずプログラミング言語を選ばなければならない。 ソリューション班では今まで「C言語」という言語を 使ってきたが、C言語で視覚的なプログラムを 作ろうとすると、プラットフォームなどの環境に 依存してしまう。 (プラットフォームとは WindowsやMacといったOSのこと。) そこで、「Java」という言語が適正ではないかと考えた。 それぞれの言語の特徴をまとめ、比較してみた。 JavaとC言語の特徴 C言語 Java ○ ◎ △ ◎ 処理速度 ◎ ○ 移植性 △ ◎ 標準ライブラリ (標準で使えるプログラム) GUIプログラミング (視覚的なプログラム) (プラットフォームへの依存) 処理速度の比較(ソート) ※RAM:1536MB CPU:AMD Athlon64 3200+ (2.00GHz)を使用 50 45 C言語 Java 40 時間(S) 35 20秒 30 25 20 15 10 5 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5 5.5 6 データ量(万個) 6.5 7 7.5 8 8.5 9 9.5 10 まとめ • 10万個のデータを並び替えても20秒ほどの差しかな いため今回のシミュレーションではさほど問題がない。 JavaもC言語もシミュレーションに使用できる • JavaはC言語よりも移植性が優れGUIプログラミング がしやすい Javaはグラフィックを使った 物理シミュレーションに向いている シミュレーションを作る 泡の運動のシミュレーションをするには泡の動きを 数値化する必要がある。 泡の運動は複雑なため、乱数を使って シミュレーションを実現しようとした。 計算方法としてRunge-Kutta法を用いた。 Runge-Kutta法の特徴 • 常微分方程式の近似解を最も誤差なく求めることので きる計算法のひとつ。 • Runge-Kutta法は一度求めた値を使って傾きの修正 を行いながら 後の数値を決めるため、より精度の 高い計算が可能。 水中の気泡の運動 運動方程式は水平成分 を x, y、 鉛直成分を zとすると、 2 2 2 2 2 2 と表すことができる。 問題 また、発泡球には重力、浮力、水の抵抗が はたらくためそれらのことも考えなければならない。 しかし、これでは規則的な運動になってしまう。 実際に実験を行った発泡球は、 不規則な運動をしていた。 そこで発泡球にはカルマン渦が 関係しているのではないかと考えた。 カルマン渦 • カルマン渦とは、一様な流れの中に流れの方 向と直角に柱状の物体を置くと柱の背後に規 則正しい配列で交互にできる渦のことである。 http://kobam.hp.infoseek.co.jp/meteor/karman.html 水中の気泡の運動 発泡球にはたらく浮力、重力、水の抵抗、さらにカルマン渦 の結果を考慮すると次の式になる。 f x kvx p(t ) f y kvy q (t ) f z Vg mg kvz r (t ) それぞれ p q r がカルマン渦の影響を表している。 気泡の運動はこれらの式で表すことが出来、 Runge-Kutta法を用いてシミュレーションをつくった。 考察・まとめ • カルマン渦の影響を考慮し、 Runge-Kutta法を 用いるとより現実的なシミュレーションが可能。 • 具体的な式が求まらない現象でも、シミュレー ションすることによって、現実に近い値を求める ことができる。 • しかし、これでも実験結果と重なることはなく、他 にも力が働いているのではないかと考えられる。
© Copyright 2025 ExpyDoc