VisualC++ と OpenGL を利用した仮想物理実験室
【2-10-1】ばね弾性力+重力がある場合の運動方程式とアルゴリズム
【2-9-1】ばね弾性力による運動の運動方程式と(2次元)アルゴリズムでは、ばね弾性力がある場合の運動方程式の導出と、コンピュータでシミュレーションを行うためのアルゴリズムの導出を行ないました。そして、【2-9-2】ばね弾性力による単振動運動(2次元)のシミュレーションでは、ばねが x-y 平面内で変位するばねの単振動のシミュレーションを行ないました。
本節では、xyz 空間内でばねが変位する場合をシミュレーションするためのアルゴリズムの導出をおこないます。 座標(0,0,z_{poll})に置かれた動かない支柱に、自然長 L_0[m] のばねの片側を固定し、反対側をボールつけ、xyz 空間内に伸ばします。時刻 t[s] のときのボールの位置を r(t)[m] とします。
ばね弾性力+重力による運動の変数
■ 時刻 t[s]
■ ボールの位置 r(t)=(x(t),y(t),z(t))[m]
■ ばねの自然長 L_0[m]
■ ばねの長さ L(t)[m]
■ ばねの変位 ΔL(t)[m]
■ ばね弾性力 f_k = (f_{kx},f_{ky},f_{kz})[N]
■ 重力 f_g = (0,0,f_f_{gz})[N]
■ 角度 Φ[rad]、θ[rad]
ボールに加わる力がばね弾性力だけでなく重力も加わるので、 ばね弾性力には添え字の k を、重力には、添え字に g をつけて区別することにします。
コンピュータアルゴリズム導出までのステップ
【2-9-2】ばね弾性力による単振動運動(2次元)のシミュレーションと同様にすすめます。
1.ばねの長さ L(t)
2.ばねの変位 ΔL(t)
3.ばね弾性力 f_k
4.ばね弾性力の x,y,z 各成分 f_{kx},f_{ky},f_{kz}
5.ボールへ加わる力の x,y,z 各成分 F_x, F_y, F_z
6.ニュートン運動方程式から加速度の x,y,z 各成分 a_x(t),a_y(t),a_z(t)
ばね弾性力 f_k の導出
【2-8-1】ばね弾性力による運動の運動方程式(1次元)とアルゴリズムで導出したとおり、 ばね弾性力 f[N] とばねの変位 ΔL[m] との関係は、フックの法則と呼ばれる次の関係式を満たします。
ばね弾性力 f[N] を導出するために、ばねの変位 ΔL[m] を得る必要があります。時刻 t[s] のときのばねの変位 ΔL(t) は、ばねの長さ L(t) からばねの自然長 L_0[m] を引いたものになります。ばねの長さ L(t) は、次の図の関係から求めることができます。
L(t) は、三平方の定理から、
ばねの変位 ΔL(t) は次のように決まります。
上式を(2.10.1)に代入することで、ばね弾性力 f[N] を求めることができます。
ついでに、角度Φも求まります。
ばね弾性力の x,y,z 各成分(f_{kx},f_{ky},f_{kz})の導出
3次元の場合では、x,y,z 成分の一括で求めることができず、2段階で行ないます。 本節でははじめに、z 成分(f_{kz})と xy平面成分(f_{kxy})の2つに分割後、 さらに、xy平面成分(f_{kxy})を x 成分(f_{kx})と y 成分(f_{ky})とに分解することで、全成分を導出します。
z 成分(f_{kz})と xy平面成分(f_{kxy})への分割
ばね弾性力 f_k と 角度Φ が求まっているので、z 成分(f_{kz})と xy平面成分(f_{kxy})はそれぞれ、sinΦ, cosΦ を掛けることで得られます。
x 成分(f_{kx})と y 成分(f_{ky})への分割
x 成分(f_{kx})と y 成分(f_{ky})への分割のために必要なのは、角度θです。
上図から、sinθ, cosθが求まります。
xy平面成分(f_{kxy})に、sinθ, cosθをそれぞれ掛けることで、x 成分(f_{kx})と y 成分(f_{ky})が得られます。
ここまで得られた式を代入することで、 ばね弾性力の x,y,z 各成分(f_{kx},f_{ky},f_{kz})の導出することができました。
ばね弾性力+重力がある場合の運動方程式
ボールに、ばね弾性力と重力が働く場合、 ボールに作用するすべての力 F[N] は、ばね弾性力の各成分(f_{kx},f_{ky},f_{kz})と 重力(0,0,f_{gz})となります。x,y,z 成分それぞれに作用する力は、
となります。式(2.10.8)を【5日目】 重力加速度、重力、ニュートンの運動方程式で導出したニュートンの運動方程式
に代入することで、空気抵抗がある場合のボールの運動方程式が得られます。
ばね弾性力が働く場合、ボールの加速度の各成分は、質量 m[kg]に反比例することがわかります。つまり上式は、「ばね弾性力による加速度は重いほど小さく、軽いほど大きくなる」ことを意味しています。これは、直感的に成り立っていることがわかります。
ばね弾性力による運動のアルゴリズムの導出
式(2.10.10)として得られたニュートンの運動方程式を【13日目】ばね弾性力がある場合の運動方程式と同様に、コンピュータでシミュレーションするためのアルゴリズム導出します。 式(2.10.10)を差分で表すと、
となります。L_n は、支柱とボールとの距離です。
式(2.10.11)は、t = t_n[s] のときの加速度 a_n[m/s^2] は、そのときの速度 v_n[m/s]で得られることを表しています。得られた加速度と等加速度直線運動のアルゴリズムを用いることで、速度 v[m/s] と位置 x[m]とを決定することができます。
本節では、ばねの変位を x軸方向に限定しているので、初期位置 x_0, 初速度 v_{x0} を指定することで、様々な運動のシミュレーションを行うことができます。 次節では、具体的なシミュレーションを行ないます。
VisualC++ と OpenGL を利用した仮想物理実験室
第0章 仮想物理実験室の構築
- 【0-1】OpenGL と Visual C++ 2008 Express Edition の準備
- 【0-2】仮想物理実験室の構築 ・(0-2-1)ver1.0:基本形 ・(0-2-1)ver1.1:基本形+ばねの描画 ・(0-2-2)ver1.2:基本形+ばねの描画
- 【0-3】グラフ作成ソフト gnuplot のインストールと使い方
- 【A-1】参考文献
・(A-1-1)OpenGL について
・(A-1-2)VisualC++ について
・(A-1-3)物理シミュレーション
・(A-1-4)数値計算
第1章 様々な運動
- 【1-1】等速度直線運動
- ・(1-1-1)物理量について
- ・(1-1-2)等速度直線運動のアルゴリズムの導出
- ・(1-1-3)等速度直線運動のシミュレーション
- ・(1-1-4)等速度直線運動のグラフ化
- ・(1-1-5)等差数列を用いた等速度直線運動の解析解の導出
- ・(1-1-6)等速度直線運動のシミュレーション結果と解析解との比較
- 【1-2】等加速度直線運動
- ・(1-2-1)等加速度直線運動のアルゴリズムの導出
- ・(1-2-2)等加速度直線運動のシミュレーション
- ・(1-2-3)等加速度直線運動のグラフ化
- ・(1-2-4)階差数列を用いた等加速度直線運動の解析解の導出
- ・(1-2-5)等加速度直線運動のシミュレーション結果と解析解との比較
- ・(1-2-6)差分と微分
- ・(1-2-7)和分と積分
- ・(1-2-8)微分・積分を利用した等加速度直線運動の解析解の導出
- 【1-3】等加加速度直線運動
- ・(1-3-1)等加加速度直線運動のアルゴリズムの導出
- ・(1-3-2)等加加速度直線運動のシミュレーション
- ・(1-3-3)等加加速度直線運動のグラフ化
- ・(1-3-4)等加加速度直線運動の解析解の導出
- ・(1-3-5)等速度直線運動のシミュレーション結果と解析解との比較
- 【1-4】等速度円運動
- ・(1-4-1)等速度円運動のアルゴリズムの導出
- ・(1-4-2)等速度円運動のシミュレーション
- ・(1-4-3)等速度円運動のグラフ化
- ・(1-4-4)等速度円運動の解析解の導出
- ・(1-4-5)等速度円運動のシミュレーション結果と解析解との比較
- 【1-5】等加速度円運動
- ・(1-5-1)等加速度円運動のアルゴリズムの導出
- ・(1-5-2)等加速度円運動のシミュレーション
- ・(1-5-3)等加速度円運動のグラフ化
- ・(1-5-4)等加速度円運動の解析解の導出
- ・(1-5-5)等加速度円運動のシミュレーション結果と解析解との比較
第2章 ニュートンの運動方程式
- 【2-1】重力による運動:自由落下運動
- ・(2-1-1)加速度・力・質量の関係:ニュートンの運動方程式
- ・(2-1-2)重力による運動のアルゴリズムの導出
- ・(2-1-3)重力による自由落下運動のシミュレーション
- ・(2-1-4)重力による自由落下運動のグラフ化
- ・(2-1-5)重力による自由落下運動の解析解の導出
- ・(2-1-6)重力による自由落下運動のシミュレーション結果と解析解との比較
- 【2-2】重力による運動:鉛直投射運動
- ・(2-2-1)重力による鉛直投射運動のシミュレーション
- ・(2-2-2)重力による鉛直投射運動のグラフ化
- ・(2-2-3)重力による鉛直投射運動の解析解
- ・(2-2-4)重力による鉛直投射運動のシミュレーション結果と解析解との比較
- 【2-3】重力による運動:水平投射運動
- ・(2-3-1)重力による水平投射運動のシミュレーション
- ・(2-3-2)重力による水平投射運動のグラフ化
- ・(2-3-3)重力による水平投射運動の解析解
- ・(2-3-4)重力による水平投射運動のシミュレーション結果と解析解との比較
- 【2-4】重力による運動:斜方投射運動
- ・(2-4-1)重力による斜方投射運動のシミュレーション
- ・(2-4-2)重力による斜方投射運動のグラフ化
- ・(2-4-2)重力による斜方投射運動の解析解
- ・(2-4-3)重力による斜方投射運動のシミュレーション結果と解析解との比較
- 【2-5】重力による運動:斜方投射運動2
- ・(2-5-1)重力による斜方投射運動における初速度の分解
- ・(2-5-2)重力による斜方投射運動2のシミュレーション
- ・(2-5-3)重力による斜方投射運動2のグラフ化
- ・(2-5-4)重力による斜方投射運動2の投射角度と飛距離の関係
- ・(2-5-5)重力による斜方投射運動2の解析解
- ・(2-5-6)重力による斜方投射運動2のシミュレーション結果と解析解との比較
- 【2-6】重力+空気抵抗力による運動:自由落下運動
- ・(2-6-1)重力+空気抵抗力による運動の運動方程式とアルゴリズム
- ・(2-6-2)重力+空気抵抗力による自由落下運動のシミュレーション
- ・(2-6-3)重力+空気抵抗力による自由落下運動の解析解の導出
- ・(2-6-4)重力+空気抵抗力による自由落下運動のシミュレーション結果と解析解との比較
- 【2-7】重力+空気抵抗力による運動:斜方投射運動
- ・(2-7-1)重力+空気抵抗力による斜方投射運動のシミュレーション
- ・(2-7-2)重力+空気抵抗力による斜方投射運動の解析解の導出
- ・(2-7-3)重力+空気抵抗力による斜方投射運動のシミュレーション結果と解析解との比較
- 【2-8】ばね弾性力による運動:単振動運動(1次元)
- ・(2-8-1)ばね弾性力による運動の運動方程式(1次元)とアルゴリズム
- ・(2-8-2)ばね弾性力による単振動運動(1次元)のシミュレーション
- ・(2-8-3)ばね弾性力による単振動運動(1次元)の解析解の導出
- ・(2-8-4)ばね弾性力による単振動運動(1次元)のシミュレーション結果と解析解との比較
- 【2-9】ばね弾性力による運動:単振動運動(2次元)
- ・(2-9-1)ばね弾性力による運動の運動方程式と(2次元)アルゴリズム
- ・(2-9-2)ばね弾性力による単振動運動(2次元)のシミュレーション
- ・(2-9-3)ばね弾性力による単振動運動(2次元)の解析解:微分・積分を利用した解析解の導出
- ・(2-9-4)ばね弾性力による単振動運動(2次元)のシミュレーション結果と解析解との比較
- 【2-10】ばね弾性力+重力がある場合の運動:単振動運動(3次元)
- ・(2-10-1)ばね弾性力+重力による運動の運動方程式(3次元)とアルゴリズム
- ・(2-10-2)ばね弾性力+重力による単振動運動(3次元)のシミュレーション
- ・(2-10-3)ばね弾性力+重力による単振動運動(3次元)の解析解の導出
- ・(2-10-4)ばね弾性力+重力による単振動運動(3次元)のシミュレーション結果と解析解との比較
- 【2-11】ばね弾性力+重力がある場合の運動:多重連結ばねの運動
- ・(2-11-1)ばね弾性力の一般化
- ・(2-11-2)ばね弾性力+重力による多重連結ばねの運動の運動方程式
- ・(2-11-3)ばね弾性力+重力による多重連結ばねの運動のアルゴリズムの導出
- ・(2-11-4)ばね弾性力+重力による多重連結ばねの運動のシミュレーション
- 【2-12】ばね弾性力+遠心力がある場合の運動:円運動
- ・(2-12-1)遠心力の導出
- ・(2-12-2)遠心力+ばね弾性力による運動の運動方程式
- ・(2-12-3)遠心力+ばね弾性力による運動のアルゴリズムの導出
- ・(2-12-4)遠心力+ばね弾性力による運動のシミュレーション
- 【2-13】張力+重力がある場合の運動:単振子運動.html
- ・(2-13-1)張力の導出
- ・(2-13-2)張力+重力による多重連結ばねの運動の運動方程式
- ・(2-13-3)張力による多重連結ばねの運動のアルゴリズムの導出
- ・(2-13-4)張力による多重連結ばねの運動のシミュレーション
- 【2-14】万有引力による運動1:楕円運動
- ・(2-14-1)万有引力の導出
- ・(2-14-2)万有引力による運動の運動方程式
- ・(2-14-3)万有引力による運動のアルゴリズムの導出
- ・(2-14-4)初速度と軌道の関係
- ・(2-14-5)万有引力による運動のシミュレーション
- 【2-15】万有引力による運動2:円運動
- ・(2-15-1)万有引力による運動が円運動になるための条件
- ・(2-15-2)初速度の与え方
- ・(2-15-3)万有引力による円運動のシミュレーション
- 【2-16】万有引力による運動3:3体運動
- ・(2-16-1)3体運動とは
- ・(2-16-2)万有引力による3体運動の運動方程式
- ・(2-16-3)万有引力による3体運動のアルゴリズムの導出
- ・(2-16-3)万有引力による3体運動のシミュレーション
第3章 剛体の運動(エネルギー保存則と運動量保存則)
- 【3-1】床と球の衝突
- 【3-2】壁と球の衝突
- 【3-3】円柱と球の衝突(1次元)
- 【3-4】円柱と球の衝突(2次元 x-y平面)
- 【3-4-2】円柱と球の衝突(2次元 x-z平面)
- 【3-5】球と球の衝突(1次元)
- 【3-6】球と球の衝突(2次元)
- 【3-7】球と球の衝突(3次元)
付録
- 【A-1】参考文献
・(A-1-1)OpenGL について
・(A-1-2)VisualC++ について
・(A-1-3)物理シミュレーション
・(A-1-4)数値計算
未分類
力学
- ・ 2体問題のシミュレーション(C言語+ルンゲクッタ法)
- ・ ラグランジュ未定乗数法を用いた2重振子のシミュレーション
- ・ ラグランジュ未定乗数法を用いた球面振子のシミュレーション
- ・ ラグランジュ運動方程式2:極座標を用いた球面振子
- ・ ラグランジュ運動方程式1:極座標を用いた単振子
量子力学
- ・ 1次元量子力学の調和振動子における単一エネルギーの時間発展
- ・ 1次元量子力学の調和振動子における任意の初期状態に対する時間発展
- ・ 1次元量子力学の調和振動子におけるコヒーレント状態の空間分布
- ・ 1次元量子力学の調和振動子におけるコヒーレント状態の時間発展
- ・ 1次元量子力学の調和振動子における n励起状態の運動量表示
- ・ 1次元量子力学の調和振動子における任意の初期運動量分布に対する時間発展
- ・ 1次元量子力学の調和振動子における任意の初期運動量分布+任意の中心座標に対する時間発展
- ・ 1次元量子力学の調和振動子における任意の初期空間分布+任意の中心運動量に対する時間発展(最も簡単な方法)
- ・ 無限に深い2次元井戸型ポテンシャル
- ・ 無限に深い2次元井戸型ポテンシャル2
- ・ 無限に深い2次元井戸型ポテンシャル3
- ・ 無限に深い2次元井戸型ポテンシャル
- ・ 2次元自由粒子
- ・ 無限に深い井戸型ポテンシャルの時間発展2
- ・ シュレディンガー方程式に従う粒子の時間発展2:無限に深い井戸型ポテンシャルの時間発展
- ・ シュレディンガー方程式に従う粒子の時間発展:自由粒子