発表したポスター

広島県立広島国泰寺高等学校
理数ゼミ ソリューション班
研究テーマ
物理班が過去に行った、水中での
気泡の運動についての研究をより発展させるために
物理シミュレーションをつくる。
シミュレーションをつくるためには
まずプログラミング言語を選ばなければならない。
ソリューション班では今まで「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法を
用いるとより現実的なシミュレーションが可能。
• 具体的な式が求まらない現象でも、シミュレー
ションすることによって、現実に近い値を求める
ことができる。
• しかし、これでも実験結果と重なることはなく、他
にも力が働いているのではないかと考えられる。