1.キャッチボール

投げられたボールの運動 x(t) を求めるには、 t=0 における初期位置・初期速度(それぞれ式(2)と式(4))を与えた上で、運動方程式(9)を解けばよい。
この章のシミュレーション(クリックで計算開始)

ボールの運動 x(t) は、初期値(1)によって一意的に決まる

投げられたボールの t 秒後の位置 x(t) が知りたい。キャッチボールをしている時、投げられたボールの運動(あるいは軌跡)は毎回様々に異なったものとなる。しかし注目すべきことに、うまい具合に「同じ投げ方」をすれば毎回同じ運動になる。運動 x(t) が一意的に決まるのだから、それを求めたいというわけである。
そのためには、「同じ投げ方」が何なのかを具体的に書き下す必要がある。経験的に分かるように、それは、以下の3つを固定することに他ならない: (1) これらの初期値を決めれば、その後のボールの運動は一意的に決まる。しかし、「どこから」とか「どの方向に」といった表現は感覚的すぎる。何らかの計算を行うためには、これらを0や1.5といった数字で表す(=定量化する)必要がある。初期値(1)を、定量化された形で与えてやれば、その後の運動 x(t) が何らかの法則により決まることになる。その法則のことを、運動方程式という。なお、ボールの回転や風による影響は無視できるとしている(例えば十分に重いボールを考えている)。
以上により、 x(t) を求めるという問題を、以下の3つ節に分けて考えることにする: 1.1:(1)1.2:1.3:x(t)

1.1 初期値(1)の定量化

この節では、初期値(1)の定量化を行う。「どこから投げるか」は位置ベクトル(2)で表され、「方向と速さ」は速度ベクトル式(4)で表されることになる。

「どこから投げるか」は、デカルト座標で表す:式(2)

まず、初期値(1)の1つ目「どこから投げるか」であるが、これは単に t=0 でのボールの位置 x(0) である。従って、ボールの位置を定量化する方法を与えればよい。それには、慣れ親しんだデカルト座標を使えばよいだろう。即ち、右図のように、ボールの位置 x を、原点 O から x 軸方向に x[m]y 軸方向に y[m]z 軸方向に z[m] という三つ組: x=xyz によって表すわけである。(あらかじめ「原点 O 」と「 x,y,z 軸」を適当に取っておく。) x(t) を位置ベクトルという。
この章の冒頭でも、投げてから t 秒後のボールの位置を x(t) と書いていたが、以降では、デカルト座標で表されているとする。すると、「ボールをどこから投げるか」は、デカルト座標により x(0)(2) と表すことができる。

「投げる方向と速さ」は、速度ベクトル(4)で表される

次は、初期値(1)は残りの2つ「投げる方向と速さ」を定量化する方法である。投げる「方向」については、その方向を向くベクトルで表現できそうだが、「速さ」については自明ではない。注目するのは、ボールの運動方向や速さを知るには、ごく短い間だけでも、ボールの運動を観察しなければならないという事実である。これは例えば、ボールが写った写真を見てボールの運動方向や速さを知るには、1枚の写真だけでは駄目で、複数の連続する写真が必要となることからも分かるだろう。従って、短時間の観察で得られる情報の中に、「投げる方向と速さ」が含まれているはずである。
そこで、右図のように、時刻 t におけるボール位置 x(t) と、 δt 秒後のボール位置 x(t+δt) の関係を考える。 δt は非常に小さいとする。 t は、例えば t=0 などに固定して考えている。 δt は非常に小さいので、 x(t+δt) は、 δt の1次関数として近似できる: x(t+δt)x(t)+˙x(t)δt(3) ˙x(t)x(t)t で微分したものであり、 は1次近似であることを示す。以下の【1.1-注1】の式(6)参照。)この式(3)は、 δt 秒後のボールの位置 x(t+δt) が、 ˙x(t) から決まることを表している。よって、ボールの運動を δt 秒だけ観測することによって得られる情報は、 ˙x(t) と等価である。
そこで、 ˙x(t) がどのような量なのか、もう少し詳しく見てみよう。まず、上式(3)の赤字部分は、 δt 秒間にボールが x(t) からどれだけ移動したかを表すベクトルなので、その大きさ |˙x(t)|δt は「 δt 秒間での移動距離」である。よって、公式「速さ・時間=移動距離」と見比べれば、 |˙x(t)| は、時刻 t でのボールの速さに等しい。一方、 ˙x(t) の向きは、明らかにボールの運動方向に等しい。つまり、 ˙x(t) は、「ボールの運動方向を向き、大きさが運動の速さに一致するベクトル」であり、まさに「運動方向と速さ」を過不足なく持っているベクトルである。この ˙x(t) を速度ベクトルという。
以上により、初期値の残りの「投げる方向と速さ」は、 t=0 における速度ベクトル: ˙x(0)(4) で表されることになる。

【1.1-注1】関数の1次近似:式(5),式(6)

変数 t の任意の関数 x(t) に対し、 t - x グラフを描いてみる。このグラフ上の任意の1点 P=(t,x) の近傍を拡大していくと、右図のように、直線に近づいていく[1]。直線は1次関数で表すことができるので、この近似直線(=接線)は、以下のように書ける: x(t+δt)x(t)+˙x(t)δt(5) t を固定し、微小量 δt だけ変化させた時の x(t+δt) が、 δt の1次関数で近似できるということである。 δt=0 の時には両辺が完全に一致する。)この式(5)を1次近似と言い、 は1次近似であることを表す。 δt の係数 ˙x(t) は、点 P における接線の傾きなので、 x(t) の微分に等しい: ˙x=dxdt δxx(t+δt)x(t) と定義すれば δxdxdtδt ともかける。
ベクトル値関数 x(t) についても、成分ごとに上式(5)を適用すれば、1次近似できる: x(t+δt)=x(t+δt)y(t+δt)z(t+δt)x(t)+˙x(t)δty(t)+˙y(t)δtz(t)+˙z(t)δt=x(t)+˙x(t)δt(6) ˙x(t) は、 x(t) の各成分を微分したものである。

補足

[1] グラフ曲線が三角定規の角のように角ばっている場合(右図)には、その点の付近をいくら拡大していっても、角ばったままで直線に近づかない。従って、その点では1次近似はできない。このようなことが起きるのは、壁と衝突するボールの運動の軌跡のように、瞬間的に運動の向きが変わる場合である。キャッチボールの運動の場合、このような角ばった軌道にはならないので、常に1次近似できる。

1.2 運動方程式の導出

この節では、ボールの運動 x(t) を実際に決める法則、即ち、運動方程式(9)を見出す。

ボールの運動は、加速度ベクトル(8)によって決まる

初期値 x(0),˙x(0) からボールの運動 x(t) を決定する法則を知りたい。もし、重力が働いていなかったら、ボールはそのまままっすぐに速度を変えず飛んでいくだろう。重力によって速度が変化するのだから、キャッチボールでの運動の法則は、速度の変化を与えるものになると考えられる。
そこでまず、 t=0 から t=δt での変化を考えてみよう。 x(δt),˙x(δt) を1次近似すると、式(3)と同様に以下のようになる: x(δt)x(0)+˙x(0)δt˙x(δt)˙x(0)+¨x(0)δt}(7) x(0),˙x(0) が与えられている状況を考えているので、右辺の未知数は ¨x のみである。 ¨x は、速度ベクトル ˙x の時間微分であり、速度の変化率(=微小時間間隔 δt を掛けると、 δt 秒間での ˙x の変化量になる量)を表すので、加速度ベクトルと呼ばれる。
加速度ベクトル ¨x(0) が分かれば、式(7)により t=δt での x(δt),˙x(δt) が決まる。さらに、 ¨x(δt) が分かれば、既に求められている x(δt),˙x(δt) を初期値として、次の δt 秒後の x(2δt),˙x(2δt) が決まる(速度の変化と加速度の関係は右図のようになる)。これを続けていくことで、任意の時刻でのボールの位置が決まることになる。よって結局、加速度ベクトル ¨x(t)(8) が分かれば、ボールの運動が決まることになる。

キャッチボールの運動方程式:式(9)

あとは、加速度ベクトル ¨x を決定するだけである。そのためには、様々な初期値・時刻で ¨x を測定する実験を行い、 ¨x がどのような法則に従うかを見出せばよい。 ¨x の値は、短い時間間隔で位置 x の測定を行えば、その結果からを逆算できる(以下の【1.2-注1】)。そのような測定を行った結果、 ¨x は、ある一定の値 g となることが知られている(以下の【1.2-注2】)。よって、キャッチボールの運動を支配する法則は ¨x(t)=g(9) である。これが求めたかった運動方程式である。(この式は、非常に単純な形をしている。ボールの運動は様々なものが可能だが、全てこの単純な式で記述されるのである。投げ方による運動の違いは、投げ方に応じて初期条件が異なることにより説明できる。)
以上により、初期値 x(0),˙x(0) が与えられれば、運動方程式(9)によって、任意の時刻 t でのボールの位置 x(t) が決まることになる。

【1.2-注1】加速度ベクトル ¨x(t) の測定

3つの時刻での位置ベクトル x(t),x(t+δt),x(t+2δt) を測定するδt はなるべく小さな値)。これらの測定値から ¨x(t) を求めたい。まず、速度ベクトル ˙x(t),˙x(t+δt) は、以下のように決まる:(式(6)を ˙x(t)[] の形に変形したもの) ˙x(t)x(t+δt)x(t)δt˙x(t+δt)x(t+2δt)x(t+δt)δt これらを用いて、加速度ベクトル ¨x(t) も決まる: ¨x(t)˙x(t+δt)˙x(t)δt=x(t+2δt)2x(t+δt)+x(t)δt(10)

補足

実際には、式(10)の代わりに、 t,t±δt での値を用いた以下の式のほうが精度は良い(中央差分という): ¨x(t)x(t+δt)2x(t)+x(tδt)δt

【1.2-注2】重力加速度 g

放り投げられた物体は、物体の種類によらず、一定の加速度 g を受ける。その値は、鉛直下向きで大きさが約 9.8m/s2 である:z 軸方向を上向きに取っている) g0m/s20m/s29.8m/s2 g を重力加速度という。

補足

物体の重さにも依存しないことに注意。これをガリレイの等価原理と言う。羽はゆっくり落ちるし、ヘリウム風船は逆に浮き上がってしまうので、ガリレイの等価原理が成り立っていないように見えるが、これは空気抵抗や空気の浮力のためであり、真空中であれば石などと同じように落ちる。もし重いほうが早く落ちるのであれば、2つの物体を別々に落とすより、接着剤でくっつけて落としたほうが早く落ちることになり、なんとなく不自然ではある(手をつないで飛び降りたほうが早く落ちる!?)。
重力加速度 g がこの値を取るのは、地球上での話である(地球上であっても場所によって0.5%程度の違いがある)。例えば、月の上だとより小さな値になるし、星から遠く離れた重力の働かない宇宙空間だと 0 になるだろう。

1.3 運動方程式(9)の解

以上により、初期値 x(0),˙x(0) が与えられれば、任意の時刻 t におけるボールの位置 x(t) は、運動方程式(9)により決まることが分かった。後は、実際に計算する方法を与えればよく、計算技術的な話になる。
この節では、運動方程式(9)のような微分方程式を解くための一般的な方法である「数値的な解法」(=コンピュータを用いた近似的な解法)について説明した後、式(9)の「解析的な解」(=数学的に厳密な解)についても述べる。

数値解

運動方程式 ¨x=g を数値的に解くには、上述の式(7)を使って逐次的に計算を進めていけばよい。即ち、以下の漸化式:x,˙x を1つのベクトルにまとめた) [x˙x]t+δt[x˙x]t+ddt[x˙x]tδt=[x˙x]t+[˙xg]tδt(11) によって、 t=0 から始めて δt ずつ進めていけばよい。これは、以下の【1.3-注1】のオイラー法を用いた計算に対応する。
実際に数値計算を行うと、右図のようになる。グリッドの間隔は 1m である。

【1.3-注1】1階の正規形微分方程式(12)の解法:オイラー法

未知関数 y(t) に対する以下の形の微分方程式を、1階の正規形微分方程式と呼ぶ: ˙y=f(y)(12) y についての1階微分方程式であり、かつ、 ˙y=[] の形になっている。) f は既知の関数である[1]。多くの微分方程式がこの形に変形できる[2]
初期値 y(0) が与えられた時、上式(12)を解くことにより、任意の t での y(t) を求めたい。これを数値的に計算するには、右図のように1次近似を繰り返し用いて、 t=0 から非常に小さな時間間隔 δt ずつ時刻を進めていけばよい: y(t+δt)y(t)+˙y(t)δt=y(t)+f(y(t))δt(13) このような計算手法を、オイラー法という[3]

補足

[1] 関数 ft に依存していてもよい: f(t,y) 。その場合、 f の関数形が t とともに変化することになる。オイラー法(13)の赤字部分は、 f(t,y(t))δt と置き換えればよい。
[2] 運動方程式 ¨x=g は2階の微分方程式であるが、以下のように1階の正規形に変形できる: ddt[x˙x]=[˙xg] 赤字部分を y とおき、右辺を f とおけば、 ˙y=f(y) となるので、確かに1階の正規形になっている。これにオイラー法(13)を適用したものが、式(11)に一致する。
[3] オイラー法は単純で分かりやすい解法ではあるが、 δt を相当小さくしなければ誤差が十分減らない。しかし一方、 δt を小さくしすぎると、計算量が増大することに加え、丸め誤差が問題になる。丸め誤差とは、コンピュータ上では実数が有限の精度しか持たないことによる誤差であり、例えば精度が15桁の場合、 11020 を足しても1に丸められてしまい変化しなくなる( δt が小さすぎる場合の式(13)の右辺に対応する)。これらのため実用上は、オイラー法(13)のように δt の1次関数で近似するのではなく、より高次の多項式で近似する方法がとられる。特に、4次のルンゲ・クッタ法と呼ばれるものがよく使われ、本サイトのシミュレーションでも使用しているが、説明は割愛する。

解析解:式(14)

運動方程式 ¨x=g の解 x(t) は、解析的に示すこともできる。実際、初期値 x(0),˙x(0) をそれぞれ x0,˙x0 と書くことにして、以下のようになる: x(t)=x0+t˙x0+12t2g(14) これは確かに、 t=0 において x(0)=x0 および ˙x(0)=˙x0 が成立し、任意の t において運動方程式 ¨x=g を満たしている。
導出方法について簡単に触れておく。まず、運動方程式 ¨x=g より、 x を2階微分すると定数になるのだから、 xt の2次関数になるはずである。即ち、ある定数 a,b,c が存在して x(t)=a+tb+t2c と書ける。後は、初期値 x(0)=x0,˙x(0)=˙x0 と運動方程式 ¨x=g に代入して得られる a,b,c に対する1次方程式を解けば、唯一の解(14)が得られる。