このデータは、Excel スプレッドシートで提供されます。それで、それをインポートした後、私はただやりvelocity = cumtrapz(t,y)
ますposition = cumtrapz(velocity)
か?
1 に答える
車が距離ゼロでゼロから出発する場合は正しいです。それ以外の場合は、初期速度も必要です。ここで実際に行っていることは、方程式を解き、a = f(t) = dv/dt
さらにa = d^2s/dt^2
を識別するv
ことであることに注意してくださいds/dt
。常微分方程式系を解くことでそれを行います。
a = dv/dt
v = ds/dt
これにはいくつかの方法があります。たとえば、オイラーフォワードを使用します。
v'(t) = (v(t+h)-v(t))/h
<=> v(t+h) = hv'(t)+v(t)
導関数が与えられている場合、つまりa = a(t)
. 反復は、指定する必要がある初期条件v(0)
で初期化されます。
あなたが知っているときv
、あなたはsに行きます。次のように再びオイラーフォワードを使用します。
s'(t) = (s(t+h)-s(t))/h
<=> s(t+h) = hs'(t)+s(t)
ここで、初期条件を知っておく必要がありますs(0)
。もしv(0) = s(0) = 0
。オイラー順方向アルゴリズムは O(h) アルゴリズムですが、微分方程式を段階的に変換して解くコツを知っていれs'(t) = v(t)
ば、より良い結果を得ることができます。これで、任意のルンゲ クッタ メソッドを使用できます。そして、使用するメソッド cumtrapz は、実際には O(h^2) メソッドです。これは、stackoverflow のカスタムとは少し異なる理論ですが、役に立てば幸いです。有限差分法と呼ばれる 2 次境界値問題の行列解法もありますが、こちらの方がやや高度です。さらに読むには、次から始めてください
http://en.wikipedia.org/wiki/Numerical_methods_for_ordinary_differential_equations