卒論中間発表

卒論中間発表
HCCにおける使用アルゴリズムの動的指定
1G01P018-1
宇佐美智史
1
HCCでは
静的に次の四つの積分法が指定出来る
⇒
オイラー法、4次ルンゲクッタ法(RKQC)、
4次ー5次ルンゲクッタ法、ブレストア法(BS)
デフォルトでは、4次ー5次ルンゲクッタ法
(RKQC)が使われている。
2
マニュアルによると
オイラー法
⇒もっとも、正確ではないがもっとも速い
4次ルンゲクッタ法
⇒正確さがさほど重要視されなくて、
一定の間隔で値が必要となる時に向いてい
る(プロットやアニメーション)
3
マニュアルによると2
BS法(Bulirsch-Stoer法)
⇒滑らかな式を積分する時に向いていて、
その時は、RKQCより速くて正確である。
4
計算される値の比較
各アルゴリズムを静的に指定し、きざみ幅を
なるべく同じになるようにして、値の比較を
する。
⇒RK4、RKQC、BSは同じ刻み幅にするこ
とができたが、オイラー法の時だけは指定
しても出来なかった。
⇒⇒これもHCCの問題なのか!?
5
-2.00E+00
5.00E+00
4.88E+00
4.75E+00
4.62E+00
4.49E+00
4.36E+00
4.24E+00
4.24E+00
4.23E+00
4.15E+00
3.88E+00
3.67E+00
3.48E+00
3.35E+00
3.15E+00
3.02E+00
2.82E+00
2.69E+00
2.56E+00
2.43E+00
2.30E+00
2.10E+00
1.97E+00
1.84E+00
1.71E+00
1.58E+00
1.39E+00
1.26E+00
1.13E+00
9.97E-01
8.67E-01
7.37E-01
6.07E-01
4.77E-01
3.47E-01
2.17E-01
0.00E+00
ボールの高さ
値比較のグラフ
bounce.hccの実行結果(アルゴリズム別)
1.20E+01
1.00E+01
8.00E+00
6.00E+00
4.00E+00
RK4
RKQC
BS
2.00E+00
0.00E+00
CPU時間
6
4.99E+00
4.95E+00
4.89E+00
4.84E+00
4.79E+00
4.75E+00
4.69E+00
4.66E+00
4.60E+00
4.56E+00
4.49E+00
4.45E+00
4.35E+00
4.25E+00
4.13E+00
3.98E+00
3.83E+00
3.67E+00
3.53E+00
3.35E+00
3.18E+00
3.00E+00
2.85E+00
2.68E+00
2.50E+00
2.31E+00
2.13E+00
1.97E+00
1.78E+00
1.60E+00
1.42E+00
1.27E+00
1.09E+00
9.10E-01
7.28E-01
5.46E-01
3.64E-01
1.82E-01
0.00E+00
ボールの高さ
値比較のグラフ(オイラー法)
EULER
1.20E+01
1.00E+01
8.00E+00
6.00E+00
EULER
4.00E+00
2.00E+00
0.00E+00
CPU時間
7
1.5
1.5
1.5
1.5
1.5
1.5
1.4
1.4
1.4
1.4
1.3
1.3
1.3
1.3
1.3
1.3
1.3
8E
+0
0
7E
+0
0
5E
+0
0
4E
+0
0
3E
+0
0
1E
+0
0
1E
+0
0
1E
+0
0
1E
+0
0
0E
+0
0
9E
+0
0
7E
+0
0
6E
+0
0
5E
+0
0
4E
+0
0
2E
+0
0
1E
+0
0
0E
+0
0
-2.00E-01
1.3
ボールの高さ
変なところの拡大図
怪しい場所
1.80E+00
1.60E+00
1.40E+00
1.20E+00
1.00E+00
8.00E-01
RK4
RKQC
BS
6.00E-01
4.00E-01
2.00E-01
0.00E+00
CPU時間
8
0E
+
1.3 00
1E
+
1.3 00
3E
+
1.3 00
4E
+
1.3 00
5E
+0
1.3 0
7E
+
1.3 00
8E
+
1.3 00
9E
+
1.4 00
0E
+
1.4 00
2E
+0
1.4 0
2E
+
1.4 00
2E
+
1.4 00
2E
+
1.4 00
3E
+
1.4 00
5E
+0
1.4 0
6E
+
1.4 00
7E
+
1.4 00
9E
+
1.5 00
0E
+
1.5 00
1E
+0
1.5 0
2E
+
1.5 00
4E
+
1.5 00
5E
+
1.5 00
6E
+
1.5 00
8E
+0
0
1.3
ボールの高さ
変なところの拡大図(オイラー)
EULER
1.80E+00
1.60E+00
1.40E+00
1.20E+00
1.00E+00
EULER
8.00E-01
6.00E-01
4.00E-01
2.00E-01
0.00E+00
CPU時間
9
アルゴリズムだけ指定
先に挙げた4つのアルゴリズムを静的に
bounce.hccに指定するが、
その他のことは変化させずに実行してそ
の結果を見ることにする。(刻み幅などを
指定しない)
10
0E
+
3.0 00
0E
6.0 01
0E
9.0 01
0E
1.2 01
0E
+
1.4 00
6E
+
1.4 00
6E
+
1.6 00
6E
+
1.9 00
6E
+
2.2 00
0E
+
2.4 00
0E
+
2.7 00
0E
+
2.9 00
9E
+
3.0 00
2E
+
3.2 00
2E
+
3.4 00
4E
+
3.6 00
4E
+
3.9 00
1E
+
3.9 00
5E
+
4.0 00
5E
+
4.2 00
0E
+
4.4 00
8E
+
4.5 00
4E
+
4.6 00
4E
+
4.8 00
1E
+
4.9 00
6E
+
4.9 00
6E
+0
0
0.0
ボールの高さ
オイラー法
EULER(デフォルト r=5)
1.20E+01
1.00E+01
8.00E+00
6.00E+00
EULER
4.00E+00
2.00E+00
0.00E+00
CPU時間
11
-2.00E+00
4.84E+00
4.54E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.23E+00
4.23E+00
4.22E+00
4.21E+00
4.18E+00
4.15E+00
4.07E+00
3.98E+00
3.81E+00
3.64E+00
3.48E+00
3.18E+00
3.03E+00
2.83E+00
2.62E+00
2.32E+00
2.12E+00
1.91E+00
1.61E+00
1.41E+00
1.20E+00
9.00E-01
6.00E-01
3.00E-01
0.00E+00
ボールの高さ
RK4法
RK4(デフォルト r=5)
1.20E+01
1.00E+01
8.00E+00
6.00E+00
RK4
4.00E+00
2.00E+00
0.00E+00
CPU時間
12
-2.00E+00
4.84E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.23E+00
4.23E+00
4.23E+00
4.22E+00
4.21E+00
4.20E+00
4.18E+00
4.15E+00
4.11E+00
4.07E+00
3.98E+00
3.89E+00
3.81E+00
3.71E+00
3.54E+00
3.28E+00
3.18E+00
2.83E+00
2.72E+00
2.12E+00
2.01E+00
1.41E+00
6.00E-01
0.00E+00
ボールの高さ
RKQC法
RKQC(デフォルト r=5)
1.20E+01
1.00E+01
8.00E+00
6.00E+00
RKQC
4.00E+00
2.00E+00
0.00E+00
CPU時間
13
-2.00E+00
5.00E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.24E+00
4.23E+00
4.23E+00
4.23E+00
4.22E+00
4.21E+00
4.20E+00
4.18E+00
4.15E+00
4.11E+00
4.07E+00
3.98E+00
3.89E+00
3.81E+00
3.71E+00
3.54E+00
3.28E+00
3.18E+00
2.83E+00
2.22E+00
2.12E+00
1.41E+00
1.10E+00
0.00E+00
ボールの高さ
BS法
BS(デフォルト r=5)
1.20E+01
1.00E+01
8.00E+00
6.00E+00
BS
4.00E+00
2.00E+00
0.00E+00
CPU時間
14
ちょっと測ってみた
bounce.hccに今まで紹介した4つの方法を
シミュレーションの長さを5にして比較
してみた。
⇒
RK4→0.234s RKQC→0.186s
EULER→0.160s BS→0.208s
15
考察
走らせたプログラムが単純なせいかもしれな
いが、そこまで大きな違いは得られなかっ
たと思う。
よくわからないこととして、動的指定のときに
この4つの方法のどれが最適であるかという
判定をしなければならないが、微妙な問題
のような気がしてなかなか大変かなぁって
思った。
16