卒論中間発表 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
© Copyright 2024 ExpyDoc