「シミュレーション」の版間の差分

編集の要約なし
編集の要約なし
編集の要約なし
38行目: 38行目:
オイラー法による近似をグラフで示すと図のようになります.
オイラー法による近似をグラフで示すと図のようになります.


#ref(Euler.png)
[[ファイル:Euler.png]]


次のサンプリング時刻における<math>x(t)</math>の値,すなわち<math>x_{k+1}</math>を接線で一次近似して求めていると解釈できます.もとの微分方程式から,接線の傾きが<math>f(x_k, t_k)</math>ですから,それに<math>\Delta t</math>を乗じた物を<math>x_{k}</math>に加えることで<math>x_{k+1}</math>を求めています.図をみると誤差(error)が大きくて,本当に使えるのか心配ですが,<math>\Delta t</math>をできるだけ小さくすれば誤差を少なくできます.しかし,<math>\Delta t</math>を小さくすると,ある期間(例えば10秒間とか)のシミュレーションをするのにそれだけ計算回数が増えることになるので注意が必要です.
次のサンプリング時刻における<math>x(t)</math>の値,すなわち<math>x_{k+1}</math>を接線で一次近似して求めていると解釈できます.もとの微分方程式から,接線の傾きが<math>f(x_k, t_k)</math>ですから,それに<math>\Delta t</math>を乗じた物を<math>x_{k}</math>に加えることで<math>x_{k+1}</math>を求めています.図をみると誤差(error)が大きくて,本当に使えるのか心配ですが,<math>\Delta t</math>をできるだけ小さくすれば誤差を少なくできます.しかし,<math>\Delta t</math>を小さくすると,ある期間(例えば10秒間とか)のシミュレーションをするのにそれだけ計算回数が増えることになるので注意が必要です.
44行目: 44行目:
図では<math>x_k</math>が真値と一致している場合で書きましたが,実際はそうとも限りません.初期値<math>x_0</math>からスタートして,オイラー法を繰り返し使った近似計算は次図のようなイメージになります.<math>\Delta t</math>をできるだけ小さくとって,真値から離れすぎないようにする必要があります.なお,この図では近似のための接線を真値のグラフ<math>x(t)</math>に接するように引いていますが,<math>x_k</math>が真値からずれている場合は図の通りにはなりません.あくまでイメージです.
図では<math>x_k</math>が真値と一致している場合で書きましたが,実際はそうとも限りません.初期値<math>x_0</math>からスタートして,オイラー法を繰り返し使った近似計算は次図のようなイメージになります.<math>\Delta t</math>をできるだけ小さくとって,真値から離れすぎないようにする必要があります.なお,この図では近似のための接線を真値のグラフ<math>x(t)</math>に接するように引いていますが,<math>x_k</math>が真値からずれている場合は図の通りにはなりません.あくまでイメージです.


#ref(Euler2.png)
[[ファイル:Euler2.png]]
 


=== Octaveによる実現 ===
=== Octaveによる実現 ===
93行目: 92行目:
<math>\frac{d^2 \theta(t)}{d t^2} = - \frac{g}{l} \sin \theta(t) - \frac{c}{m} \frac{d\theta(t)}{dt} \quad , \theta(0) = \theta_0 \quad , \frac{d\theta(t)}{dt} \bigg|_{t=0} = 0</math>
<math>\frac{d^2 \theta(t)}{d t^2} = - \frac{g}{l} \sin \theta(t) - \frac{c}{m} \frac{d\theta(t)}{dt} \quad , \theta(0) = \theta_0 \quad , \frac{d\theta(t)}{dt} \bigg|_{t=0} = 0</math>


#ref(pendulum.png)
[[ファイル:pendulum.png]]


このような2次のシステムの場合,次のような2個の変数を新たに定義します.これらを状態変数と呼びます.
このような2次のシステムの場合,次のような2個の変数を新たに定義します.これらを状態変数と呼びます.
177行目: 176行目:




#ref(Rungehoine.png)
[[ファイル: Rungehoine.png]]


*2次のルンゲ・クッタ法(ホイン法)の原理
*2次のルンゲ・クッタ法(ホイン法)の原理
344行目: 343行目:


*慣性・粘性・弾性系
*慣性・粘性・弾性系
#ref(MDKsystem.png)
 
[[ファイル: MDKsystem.png]]


物体の運動方程式は,
物体の運動方程式は,