微分方程式(数値解)
考えている物理的または化学的なシステムが複雑になると、 運動方程式などの微
分方程式で現象を記述できても、 その式を解析的に解くことはほとんど不可能に
なります。 そこで重要になってくるのが、微分方程式を数値的に解くテクニックです。
ここでは、 2Dグラフィックスを使って式を解いた結果をビジュアルに示したいと思い
ます。勿論、三次元的な問題には3Dグラフィックスが必要になります。
まずは、仮想的に考えた太陽系を考えましょう。この太陽系には、恒星とその周りを
周回するいくつかの惑星が存在します。問題を簡単にするために、恒星の質量は惑
星の質量に比べて格段に大きいものとします( 恒星の質量がそれほど大きくない場
合も後で検討します)。 この仮定によって、 惑星の軌道は惑星に関する運動方程
式のみを数値的に解けば、得られることになります。
例えば、 ある太陽系が一つの恒星と二つの惑星から構成されているとしましょう (
図1参照)。 このシステムでは、三つの運動方程式を同時に解かなければなりませ
ん。
恒星の運動方程式:
MS d2RS /dt2=−MS MP1 G(RS−RP1 )/ |RS−RP1 |3
−MS MP2 G(RS−RP2 )/ |RS−RP2 |3
惑星1の運動方程式:
MP1 d2RP1 /dt2=−MP1 MS G(RP1−RS )/ |RP1−RS |3
−MP1 MP2 G(RP1−RP2 )/ |RP1−RP2 |3
惑星2の運動方程式:
MP2 d2RP2 /dt2=−MP2 MS G(RP2−RS )/ |RP2−RS |3
−MP2 MP1 G(RP2−RP1 )/ |RP2−RP1 |3
ここで、MS、MP1、MP2、Gはそれぞれ、恒星の質量、惑星1の質量、惑星2の質量そ
して万有引力の定数です。
しかし、既に中心力の所で議論したように、MP1<<MSの場合は恒星の軌道の平
均半径が恒星自身の半径よりも格段に小さく、 惑星の円軌道( または楕円軌道)の
中心(または焦点 )は恒星の中心と一致していると考えて問題はありません。加えて
、もう一つの惑星による万有引力の影響も無視できるので、 解くべき微分方程式
は次の式だけになります。
惑星1の運動方程式:
MP1 d2RP1 /dt2=−MP1 MS G RP1 / |RP1 |3
上式におけるRP1 は恒星の中心から惑星1の中心に向かう位置ベクトルです。
では、上記の微分方程式を数値的に解くことを考えましょう。 まず、 その式を見れば
判るように、惑星1の加速度ベクトルは位置ベクトルに比例する形になっています。
したがって、 惑星1の速度ベクトルと位置ベクトルで決まる平面上に加速度ベクト
ルもあることが判ります。これは、惑星1が取る軌道が一つの平面上にあることを示
しています。 この平面上で微分方程式を考えれば、 問題自体は二次元の問題にな
ることに注意してください(図2参照)。
上で述べた平面上にXY軸をとり、運動方程式を成分表示してみます。
X成分: MP1 d2XP1/dt2=−MP1 MS G XP1/ ( X2P1+Y2P1)3/2
Y成分: MP1 d2YP1/dt2=−MP1 MS G YP1/ ( X2P1+Y2P1)3/2
この式において、座標の原点は恒星の中心と一致させてあります。円軌道の場合は
ともかく、XP1とYP1が二式の中でミックスしているため、簡単には解析的に解けませ
ん。以下に、極座標で表現した運動方程式も示しておきます。チャレンジ精神がある
方は自分で解いてみてください。これ以降は、惑星1の座標を表す添え字を省略しま
す。
微分方程式の挙動を調べる上で、係数などはあまり本質的ではないので質量や物
理定数は式から省くことにします。ゆえに、惑星1に関する運動方程式は、
X成分: d2X/dt2=−X/ ( X2+Y2)3/2
Y成分: d2Y/dt2=−Y/ ( X2+Y2)3/2
となります。以上から、解くべき微分方程式は上の二式になります。ただし、物理法則
を表す式では右辺と左辺の単位が揃わないといけないので、 気になる方は左辺に
単位を調節するための係数を導入しても構いません。
第一番目の式にYを掛けたものと第二番目の式にXを掛けたものは等しくなっている
ので、統合した形で微分方程式を表すと、
Y d2X/dt2=X d2Y/dt2
となります。この式は、次のようにも書き換えられます。
(d2X/dt2)/(d2Y/dt2)=X/Y
加速度ベクトルは位置ベクトルに比例していると指摘しましたが、上式はそのことをX
成分とY成分の比という形で示しています。
次に、数値計算するためのステップを考えてみます。初期位置(X0、Y0)と初期速度
(VX0、VY0)から、計算はスタートすることになります。時間的な刻み幅はΔtとしまし
た。
ステップ1
(X0、Y0)から、運動方程式を使って初期加速度(AX0、AY0)を計算する。
AX0=−X0/ ( X02+Y02)3/2、 AY0=−Y0/ ( X02+Y02)3/2
ステップ2
(X0、Y0)と(VX0、VY0)から、Δt後の(X1、Y1)を計算する。
X1=X0+VX0Δt、 Y1=Y0+VY0Δt
ステップ3
(VX0、VY0)と(AX0、AY0)から、Δt後の(VX1、VY1)を計算する。
VX1=VX0+AX0Δt、 VY1=VY0+AY0Δt
後は、このプロセスを繰り返すことによって、 (X2、Y2)、(X3、Y3)、(X4、Y4)・・・・・・
という具合に順番に座標を計算して行けば良い訳です。 これらの点を2Dグラフィック
スを使って全て繋いでやれば、最終的に惑星1の軌道になります。
それでは、初期値に数値を与えて実際に軌道を計算してみます。 使うソフトは十進B
ASICです。以下にそのプログラムを示します。
上のプログラムにおいて、 初期値を(X0、Y0)=(20、0)、(VX0、VY0)=(0、0.2
8)とし、時間ステップを3000まで取った結果を以下に示します。
また、上の数値を2Dグラフックスを使って表示したものは次のようになります。
計算の精度に問題があるため軌道は閉じていませんが( 図3参照、変更後 )、プ
ログラムを工夫すればより正確な軌道を計算して描画させることは可能です。
私たちが住む太陽系に関しては、太陽や地球の質量は判っています。それらを基に
、初期位置や初期速度をいろいろ仮定して地球の軌道を数値計算してみてください
。