mathjax

2013年8月26日月曜日

PEOPLE_1: 質点の定義と運動の記述・表現

PEOPLE_1: 質点の定義と運動の記述・表現

ソース

最初に、質点を考える。 質点とは、質量を持ち、その存在位置以外に自由度を持たない物体の事を言う。

存在位置が唯一の自由度という事は、存在位置の時間変化を理解すれば質点が完全に理解できた事になる。

存在位置の時間変化の事を運動と呼ぶ事にする。

質点の運動を表現する一つの方法は適当な3次元座標軸を設定して、質点の位置座標を時間の関数として表示する事だ。

例えば、螺旋運動を考えてみよう。 回転軸をz軸にとり、回転半径を1m、回転周期を10sec、1周あたりの上昇を0.5mと仮定すると、時間を\(t\)(sec)として、各座標(\(x, y, z\))は

\[ \theta =2 \pi t/10.0 \\ x=1.0 \times \cos{\theta} \\ y=1.0 \times \sin{\theta} \\ z=0.5/10.0\times t \]

と書けるので、以下の関数を定義すればよい。

In [1]:
def helix_xyz(time):
    _z=0.5/10.*time
    _theta=np.pi*2.*time/10.
    _x=1.*np.cos(_theta)
    _y=1.*np.sin(_theta)
    return _x,_y,_z

この関数を持ちいて、各座標の時間変化をグラフにしてみよう。

In [2]:
time=np.linspace(0.,50.,num=100)
x,y,z=helix_xyz(time)
plt.plot(time,x,label='x')
plt.plot(time,y,label='y')
plt.plot(time,z,label='z')
plt.xlabel('time(sec)')
plt.ylabel('x, y, z(m)')
plt.legend(loc='best')# loc はlocation つまり、凡例(legend)の位置を表す。
Out[2]:
<matplotlib.legend.Legend at 0x3ca84f0>

運動の軌道を見たい場合もあるだろう。 しかし3次元空間での運動をPCの画面に表示するのは容易な事ではない。

今回はmplot3dという機能を使ってみる。

In [3]:
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(x,y,z)
ax.set_xlabel('x (m)')
ax.set_ylabel('y (m)')
ax.set_zlabel('z (m)')
Out[3]:
<matplotlib.text.Text at 0x3d26210>

3次元空間の表示方法

我々は3次元空間内の運動や、立体的な物体の表示方法として確立された方法を得ている訳ではない。 いまだに学術論文は2次元の紙媒体か、それに準ずるPDF等の媒体を用いており、3次元空間を表示するにはそれを何等かの方法で2次元に射影、投影した物を利用する。 上記のグラフも、

pylab=qt

の設定であれば、マウス操作で見る角度を操作できるのだが、そのような3次元空間の情報を直接表示するのではない、射影、投影の方法で学術論文は成立している。

3次元情報を備えたグラフ表示や、更に時間情報を加えた3Dアニメーションが研究発表の標準的な方法になれば、科学の更なる発展が期待できるのかもしれないが、 現実は、上記のような単純な射影、投影の方法だけでも、かなりの事柄が理解できるという事を示している。 また、多くの場合、より単純な2次元グラフだけで済んでしまう場合も多い。

上記の螺旋運動の場合には、

In [4]:
plt.figure()
plt.plot(x,y)
plt.xlabel('x (m)')
plt.ylabel('y (m)')
ax=plt.gca()
ax.set_aspect(1)
plt.figure()
plt.plot(z,x)
plt.xlabel('z (m)')
plt.ylabel('x (m)')
ax=plt.gca()
ax.set_aspect(1)
plt.figure()
plt.plot(z,y)
plt.xlabel('z (m)')
plt.ylabel('y (m)')
ax=plt.gca()
ax.set_aspect(1)
plt.tight_layout()

このような平面的なグラフを組み合わせる事で定量的な記述と表現を行い、上記の様な3D的な投影図の役割は読者にイメージを喚起するだけに過ぎない場合が多い。

まとめ

今回はMatplotlibを用いた質点の運動の表示方法を示した。 次回以降、運動方程式を導入し、少しずつ物理実体指向の方向性を示していけたらと思う。

0 件のコメント:

コメントを投稿