スリムアークTA500...小口径管長距離推進工法 オーガ方式及びびびび泥土圧方式一工程式泥土圧方式一工程式・・・・先導体駆動方式先導体駆動方式
10. 運動方程式の数値解法 - shimane-u.ac.jp1 10. 運動方程式の数値解法 10.1....
Transcript of 10. 運動方程式の数値解法 - shimane-u.ac.jp1 10. 運動方程式の数値解法 10.1....
1
10. 運動方程式の数値解法
10.1. ニュートン方程式の近似
速度は,位置座標 x の時間微分で,
xxvdt
d と定義されます.これを成分で
書くと,
t
tytty
dt
dytv
t
txttx
dt
dxtv
ty
tx
)()(lim)(
)()(lim)(
0
0
(1)
とかけます.本来は t が 0 の極限をとらな
ければいけませんが,有限の小さな値とすると t 秒後の位置座標は速度を用いて,
ttvtytty
ttvtxttx
y
x
)()()(
)()()( (2)
と近似できます.
同様にして,加速度は,速度v の時間微分で, vvadt
d と定義されます.これを成分で
書くと,
t
tvttv
dt
dvta
t
tvttv
dt
dvta
yy
t
y
y
xx
t
x
x
)()(lim)(
)()(lim)(
0
0
(3)
とかけます.本来は t が 0 の極限をとらな
ければいけませんが,有限の小さな値とする
と上の式から t 秒後の速度は加速度を用い
て,
ttatvttv
ttatvttv
yyy
xxx
)()()(
)()()( (4)
と近似できます.
ニュートン方程式は, af m で与えられます.2 次元の場合に成分で書くと,
)(
)(
tmaf
tmaf
yy
xx (5)
となります.式(5)と近似式(2),(4)を用いると物体の運動は,
)(tx
t tt
)( ttx
)(tv
t tt
)( ttv
2
ttvtxttx
ttatvttv
mfta
x
xxx
xx
)()()(
)()()(
/)(
ttvtytty
ttatvttv
mfta
y
yyy
yy
)()()(
)()()(
/)(
(6)
を計算してやれば,求まることが分かります.
10.2. オイラー法
時刻を t 刻みに分割して tnt とすると,(6)式は,
ttnvtnxttnx
ttnatnvttnv
mftna
x
xxx
xx
)()()(
)()()(
/)(
ttnvtnyttny
ttnatnvttnv
mftna
y
yyy
yy
)()()(
)()()(
/)(
(7)
と書き直すことができます.これにより物体の運動をシミュレートすることが可能となり
ます.微分方程式をこのように,
ttgdt
dtgttg )()()( (8)
と近似して解く方法をオイラー法と言います.以下にオイラー法のスキームを図示します.
時刻 位置 速度 加速度 力
tn )( tnx )( tnvx )( tnax )( tnf x
ttn )( ttnx )( ttnvx )( ttnax
ttnvtnxttnx
ttnatnvttnv
mFtna
x
xxx
xx
)()()(
)()()(
/)(
③
②
①
10.3. 物体の投射をオイラー法で解く
ここでは,オイラー法を使って斜方投射を解析するエクセルファイルを作成します.斜方
投射のニュートン方程式は,
)(
)(0
tmamgf
tmaf
yy
xx
で与えられ,初速度を 0v ,水平面からの投射角度を とすると初期条件は,
sin)0(,cos)0(,0)0()0( 00 vvvvyx yx
で与えられる.
① ② ③
3
10.3.1. 初期値と定数の設定
① まず,右図のように初期値を入力します.英数字は
全て半角英数で入力してください.それぞれの意味は,
dt 時間刻みΔt
m 物体の質量
x0 t=0 での x 座標
y0 t=0 での y 座標
v0 初速度の大きさ
theta 物体を投げ上げる時の水平線と
の角度
v0x 初速度の x 方向成分
v0y 初速度の y 方向成分
です.
図1
② 次ぎに入力した値に名前をつけます.B3 セルを選択して,プルダウン・メニューの[挿
入]→[名前]→[定義]とクリックします. 図2のダイアログが開くので[OK]をクリックしま
す.
これで,「0.02」に「dt」という名前が付きます.以下,同様にして,B4 セルから B8 セル
までそれぞれ,「m」,「x0」,「y0」,「v0」,「theta」と名前をつけていきます.
図2
③ B9 セル,B10 セルにそれぞれ以下のように入力します.
B9 =v0*cos(theta*pi()/180)
B10 =v0*sin(theta*pi()/180)
④ ②と同様にして,B9 セル,B10 セルにそれぞれ,「v0x」,「v0y」と名前をつけます.
4
10.3.2. 計算式の入力
① 図3のように A12 セルから J12 セルまで文字を入力します.
図3
② A13 セルから A63 セルまで,0,1,2,...,50 と数字を入力しま
す.そのために,A13 と A14 にそれぞれ,0 と1を入力して,A13 と
A14 の両方を選択し,選択された枠の右下の■をドラッグして A63 セ
ルまで持っていくと簡単に入力できます.
図4
③ tnt によって,時刻を計算します.そのために,B13 セルに「=A13*dt」と入力し
ます.②の時と同様に B13 セルが選択された状態で,枠の右下の■をドラッグして B63 セ
ルまで持っていくと時刻が入力されます.
④ fx を入力します.x 軸方向には力は働かないので,I13 セルに 0 を入力します.②の時
と同様に I13 セルが選択された状態で,枠の右下の■をドラッグして I63 セルまで持って
いくと 0 がコピーされます.
⑤ fy を入力します. mgf y なので,J13 セルに「=-1*m*9.8」を入力します.②の時
と同様に J13 セルが選択された状態で,枠の右下の■をドラッグして J63 セルまで持って
いくとこの式がコピーされます.
⑥ ax を入力します. mfa xx / なので,G13 セルに「=I13/m」と入力します.②の時
と同様に G13 セルが選択された状態で,枠の右下の■をドラッグして G63 セルまで持って
いくとこの式がコピーされます.
⑦ ay を入力します. mfa yy / なので,H13 セルに「=J13/m」と入力します.②の時
と同様に H13 セルが選択された状態で,枠の右下の■をドラッグして H63 セルまで持って
いくとこの式がコピーされます.
⑧ 初期値を入力します.各セルに以下のように入力します.
C13 =x0
D13 =y0
E13 =v0x
F13 =v0y
⑨ いよいよ計算式を入力します.各セルに以下のように入力します.3 行目は入れた数式
の意味を示します.
5
C14 =C13+E13*dt tvxtx x *)0()0()(
D14 =D13+F13*dt tvyty y *)0()0()(
E14 =E13+G13*dt tavtv xxx *)0()0()(
F14 =F13+H13*dt tavtv yyy *)0()0()(
⑩ ⑨でセル C14,D14,E14,F14 に入力した数式を②の要領でセル C63,D63,E63,
F63 までコピーします.
ここまでで表は,図5の様になっているはずです.以上で,数値的に差分方程式の解が得
られます.
図5
10.3.3. 結果のグラフ化
ここでは結果をグラフにします.
① セル C13-C63 と D13-D63 を選択します.
② プルダウンメニューの[挿入]→[グラフ]とクリックします.
6
図6
③ 図6のグラフウィザードダイアログが開くので,[散布図]を選んで,[次へ]をクリック
します.その後 2 回ダイアログが開きますが,とりあえず[次へ]をクリックし最後のダイア
ログで[完了]をクリックします.
④ すると図7のように自由落下の様子がグラフになります.
-6
-5
-4
-3
-2
-1
0
0 0.2 0.4 0.6 0.8 1
系列1
図7
7
10.3.4. 異なる初期条件の計算
「v0」と「theta」を変化さ
せると,異なる初期条件の
時の解が得られます.例え
ば図8は,v0=5,theta=45
の時の解です.
-1.5
-1
-0.5
0
0.5
1
0 1 2 3 4 系列1
図8
10.3.5. 理論値との比較
斜方投射の問題の正確な答えを我々は知っています.時刻 t=0 に ),( 00 yx から初速度
),( 00 yx vv で物体を投げたときの時刻 t での物体の座標は,
2
00
00
2
1)(
)(
gttvyty
tvxtx
y
x
で与えられます.そこで,数値解析による値を正確な理論値と比較して見ます.
① 各セルに以下のように入力します.
L12 x_exact
M12 y_exact
L13 =x0+v0x*B13
M13 =y0+v0y*B13-0.5*9.8*B13^2
② セル L13 を L63 まで,M13 を
M63 までそれぞれコピーをする.こ
れで正確な理論値が計算されます.
③ 図8の数値解と比較するために
一緒にプロットします.そのために,
図8のグラフを選択して,プルダウ
ンメニューの[グラフ]→[データの追
図8
8
加]とクリックします.図9の[デー
タの追加]ダイアログが開くので,セ
ルL13-L63,M13-M63を選択し,
[OK]をクリックします.
④ 図9の[形式を選択して貼り付
け]ダイアログが開くので,[先頭行
を項目列として使用する]にチェッ
クを入れて,[OK]をクリックしま
す.
⑤ 図 10 の様に理論値と数値解析
値が同時にプロットされます.
図9
-1.5
-1
-0.5
0
0.5
1
0 1 2 3 4 系列1
系列2
図 10
(問題1) 上の斜方投射の解析を,速度に比例した空気抵抗がある場合に拡張しなさい.ニ
ュートン方程式は,
)()(
)()(
tmatvmgf
tmatvf
yyy
xxx
となる. を適当に変えて結果をプロットしなさい.
(問題2) 上の例を参考にして,単振動を解析するエクセルファイルを作りなさい.初期条
件として, 10 x , 00 y , 00 v ,theta=0 とします.運動方程式は,
yy
xx
maF
makxF
0
ですから,変わるのは初期条件と力の部分だけです.ただし,k=1 とします.変位 )(tx を時
刻 t の関数としてプロットしなさい.また,理論値と比較しなさい.
*間違いの元になるので,前の課題と違う新しいエクセルファイルを作ること.前の課題
のファイルをコピーして使うと便利である.
9
10.4. 蛙飛び法
問題2を解くと右図のような結果が得
られます.単振動では,-1 から 1 の間を
振動するはずなので明らかに間違って
います.これはオイラー法による数値解
析の誤差のためです.
オイラー法は簡単ですが,誤差の大きい
方法です.ここでは,もう少し誤差を小
さくする方法を考えましょう.誤差を小
さくするためには,
-3
-2.5
-2
-1.5
-1
-0.50
0.5
1
1.5
2
2.5
0 5 10 15
① 時間刻み t を小さくする
② より良いアルゴリズムを考える
という 2 通りの方法が考えられます.ここでは,計算量を変えずにほんの少し式を変更す
るだけで劇的に誤差を小さくできる蛙飛び法と呼ばれる方法を紹介します.オイラー法の
近似が良くない理由は,時刻 t での微分を tt と t を結ぶ線分の傾きで近似していること
にあります(下図(a)).これを, 2/tt と 2/tt を結ぶ線分の傾きで近似すればかなり
良くなることが期待できます(下図(b)).
ttatvttv
t
tvttvta
)()()(
)()()(
(a)
ttattvttv
t
ttvttvta
)()2/()2/(
)2/()2/()(
(b)
具体的には,加速度と位置座標を評価する時間を速度を評価する時間と 2/t だけずらして,
)(tv
t tt
)( ttv
t 2/tt
)2/( ttv
2/tt
)2/( ttv
10
tt
tvtxttx
ttat
tvt
tv
mFta
x
xxx
xx
)2
()()(
)()2
()2
(
/)(
tt
tvtytty
ttat
tvt
tv
mFta
y
yyy
yy
)2
()()(
)()2
()2
(
/)(
(9)
とします.以下に蛙飛び法のスキームを図示します.
時刻 位置 速度 加速度 力
2/ttn )2/( ttnvx
tn )( tnx )( tnax )( tnf x
2/ttn )2/( ttnvx
ttn )( ttnx )( ttnax )( ttnf x
tt
tnvtnxttnx
ttnat
tnvt
tnv
mFtna
x
xxx
xx
)2
()()(
)()2
()2
(
/)(
③
②
①
蛙飛び法がオイラー法よりも精度の高い計算法であることを見ておこう.オイラー法はテ
イラー展開,
32 ))(('''6
1))((''
2
1)(')()( ttvttvttvtvttv
で 1 次まで採った近似であり,刻み幅 t の 2 乗の誤差を持つ.一方,蛙飛び法は,
32
2)('''
6
1
2)(''
2
1
2)(')()
2(
ttv
ttv
ttvtv
ttv
32
2)('''
6
1
2)(''
2
1
2)(')()
2(
ttv
ttv
ttvtv
ttv
の片々を引いた式から得られる近似式,
3))(('''24
1)()
2()
2( ttvtta
ttv
ttv
で 1 次まで採った近似であり,誤差は刻み幅 t の 3 乗になる.例えば 1.0t とすると 10
倍精度の良い計算となるのである.言い方を変えると,同じ精度の結果を得るのに 10 分の
1 の時間で計算できることになる.
①
②
③
11
10.5. 物体の投射を蛙飛び法で解く
10.3 で作成したエクセルファイルを編集して「蛙飛び法」のエクセルファイルを作ります.
そのため,前のファイルをコピーして別のファイルを作ります.蛙飛び法では,座標と速
度の間に 2/t だけ時間差があります.そのため,各セルに以下の値が入るように変更しま
す.
n t x y vx vy
0 0 )0(x )0(y )2/( tvx )2/( tvy
1 t )( tx )( ty )2/3( tvx )2/3( tvy
n tn )( tnx )( tny )2/( ttnvx )2/( ttnvy
n+1 tn )1( ))1(( tnx ))1(( tny )2/3( ttnvx )2/3( ttnvy
n ax ay fx fy
0 )0(xa )0(ya
)0(xF )0(yF
1 )( tax )( ta y
)( tFx )( tFy
n )( tnax )( tna y
)( tnFx )( tnFy
n+1 ))1(( tnax ))1(( tnay
))1(( tnFx ))1(( tnFy
)2/( tvx と )2/( tvy は仕方ないのでオイラー法で,
tavtv
tavtv
yyy
xxx
)0(5.0)2/(
)0(5.0)2/(
0
0
により計算することにします.
12
10.5.1. エクセルファイルの編集
① 上記を実現するために,各セルを以下のように変更します.3 列目は数式の意味を示し
ます.
E13 =v0x+0.5*G13*dt tav xx )0(5.00
E14 =E13+G14*dt ttatv xx )()2/(
F13 =v0y+0.5*H13*dt tav yy )0(5.00
F14 =F13+H14*dt ttatv yy )()2/(
② セル E14 を E63 までコピーします.また,
セル F14 を F63 までコピーします.
今度は右図のように,理論値と数値解析値がほぼ
一致しています. t をもっと大きくしてもよく
一致していることがわかります.
-1.5
-1
-0.5
0
0.5
1
0 1 2 3 4
系列1
系列2
(問題3) 問題2の単振動を蛙飛び法を用いて解きなさい.
(問題4) 万有引力を受けた物体の運動を解きなさい.質量 m と M の物体に働く万有引力の
大きさは2r
mMG です.質量 M の物体は原点にあり,M は m に比べて十分大いため質量 M
の物体は動かないと仮定する.このとき質量 m の物体に働く万有引力は原点に向きます.
従って,質量 m の物体に働く万有引力を成分で書くと,
y
yx
GMmF
x
yx
GMmF
y
x
322
322
となります.簡単のため, 1,1 mGM とし,初期条件, 1,1,0 000 vyx ,theta=0
としてエクセルで解きないさい.
(問題5) 問題4で初期条件( 0x , 0y , 0v ,theta)を色々と変えて計算してみなさい.