4月に研究室に入って半年間弱くらい数値計算の世界に浸り、ようやくその中間成果を発表する小規模な学会への準備が大体終わった訳です。
長かったような、短かったような。
出来ないからって不貞腐れていた訳でも現実逃避のために出来ない同士で談笑して時間を潰していたなんてそんな事は・・無いはず。。
と言うことは置いておいて。
PCを用いての数値計算と紙とペンで考えた式との大きな隔たりと言えば、PC上に連続の概念を持ち込むのは不可能と言う事です。
どういう事かと言うと、PC上で計算する時はどうしても空間や時間を飛び飛びの値(離散的な値)にする必要があります。
つまり、どういう事?
—それは具体的には、飛び飛びの値で微分を差分として表す事や、積分を台形や区分求積やさらに複雑な多項式で近似して足し合わせる必要があるのです。
この連続でない飛び飛びな値を取る事のような考え方を受け入れるまで半年ほど掛かりました。そのようなメモだったりします。
具体的なコードとかは勉強の進行次第上げるかも知れません…
因みに、核となる計算プログラム部分はFortran90、それにラップするGUIプログラムはC#(コマンドライン引数をFortranプログラムに渡す役目。)、データ解析用のちょっとしたプログラムはC99で組んでいます。
それぞれ、の特性を生かした結果、こうなりました。。
半年間数値計算と向き合って
Re: 半年間数値計算と向き合って
ゲームでキャラクターがジャンプするときに放物線の公式で座標を求めるのではなくて、直前の座標に加速度を加えていくことで座標を更新するのと同じような考え方でしょうかね。
だとしたらゲームプログラミングでも欠かせない考え方ですね。これを身に付けないとゲームは作れないと言ってもいいくらい。
でも大学の研究だと誤差が問題になるのではないでしょうか。
だとしたらゲームプログラミングでも欠かせない考え方ですね。これを身に付けないとゲームは作れないと言ってもいいくらい。
でも大学の研究だと誤差が問題になるのではないでしょうか。
Re: 半年間数値計算と向き合って
>ISLeさん
>ゲームでキャラクターがジャンプするときに放物線の公式で座標を求めるのではなくて、直前の座標に加速度を加えていくことで座標を更新するのと同じような考え方でしょうかね。
同じようなと言うどころか発想は全く同じです。
数値計算の世界では時間発展と呼ばれますが、ゲームの世界では画面の更新とかパラメーターの更新と呼ばれるのでしょうか・・。
画面とかキャラクターの座標の数値もおそらく60fpsの間隔で更新されてますよね。
思い返してみるとゲームプログラミングでなぜ直前の座標に加速度を加えていくようなことをするのか悩んだ時期もありました。
キーワードは飛び飛びの値だったんですね!
>でも大学の研究だと誤差が問題になるのではないでしょうか。
そのために色々な数値積分や差分法や多項式補完法が考えられています。
シミュレーションの分野では計算量を抑えつつ、より精度の高い方法が模索されていますね。
>ゲームでキャラクターがジャンプするときに放物線の公式で座標を求めるのではなくて、直前の座標に加速度を加えていくことで座標を更新するのと同じような考え方でしょうかね。
同じようなと言うどころか発想は全く同じです。
数値計算の世界では時間発展と呼ばれますが、ゲームの世界では画面の更新とかパラメーターの更新と呼ばれるのでしょうか・・。
画面とかキャラクターの座標の数値もおそらく60fpsの間隔で更新されてますよね。
思い返してみるとゲームプログラミングでなぜ直前の座標に加速度を加えていくようなことをするのか悩んだ時期もありました。
キーワードは飛び飛びの値だったんですね!
>でも大学の研究だと誤差が問題になるのではないでしょうか。
そのために色々な数値積分や差分法や多項式補完法が考えられています。
シミュレーションの分野では計算量を抑えつつ、より精度の高い方法が模索されていますね。