経緯

後輩が研究として、物理シミュレーションして、VRで遊べるアプリケーションを作っていた。空気抵抗とか結構考えないといけないみたいで、複雑な微分方程式を解かなきゃならないっぽい。んで、大学時代にカオスとかやってた自分に「Runge-Kutta法」教えて!みたいに来たので、プログラムを作ってみた。

Runge-Kutta法ってなんじゃい!

http://hooktail.org/computer/index.php?Runge-Kutta%CB%A1

↑を参照。プログラムもここを大いに参考にした。

プログラム

言語はC++です。

RungeKutta.hpp

RungeKutta.cpp

使い方

減衰振動の以下の式をシミュレーション

減衰振動

以下のようにyを定義すると

減衰振動

減衰振動

の2つの一回微分方程式に分解できるので、それらを_f0, _f1として定義して、RungeKuttaにかける。

結果

openFrameworksでグラフを描画してやるとこんな感じ。

スクリーンショット 2015-12-15 12.45.13

ちゃんと減衰振動してる!