(31)二重振子 3(アニメ化の準備として Nspire 側でユーザー定義函数を作る)

f:id:ti-nspire:20150623112031j:plain

二重振子も Lua スクリプトでアニメ化するが、これ↓を math.eval() 函数の引数として Lua スクリプトに記述するのは相当難儀である。
f:id:ti-nspire:20150623120117j:plain

よって Nspire 側でユーザー定義函数にまとめることにする。
引数は左から重力加速度、l_{1}m_{1}l_{2}m_{2}、スタート時間、ストップ時間、θ_{1} 初期値、v_{1} 初期値、θ_{2} 初期値、v_{2} 初期値、時間刻み幅、精度
f:id:ti-nspire:20150623120232j:plain

実行結果:
f:id:ti-nspire:20150623114258j:plain

出力された行列は 1 行目が時間 t、2 ~ 5 行目が θ_{1}v{1}θ_{2}v_{2}

定数は最初から函数内に書き込んでおけば無駄がないがこのままにしておく。
また、返値で必要なのは「次の θ_{1}」「次の v_{1}」「次の θ_{2}」「次の v_{2}」の 4 つだけであるが、これもこのまま、つまり rk23() の返値をすべて出力することにしておく。