next up previous contents
Next: Glocate-Gprint Up: グラフィック Previous: Sample Program 11b   Contents

Sample Program 11c

次に、波の伝播をアニメーション風に図示する サンプルをやってみましょう。この例では、 波数(単位長さ当たりに存在する波の数)、kを乱数を用いて定め、 周波数、$\omega$を重力加速度、gと波数を掛けたものの平方根としています。 ちなみにこの $\omega=\sqrt{gk}$という関係は、水面等に出来る、表面重力波 の波数と周波数の関係を想定しています。 波数、kと周波数、$\omega$を用いて、時間とともにx軸の正の方向に伝播する波動の振幅、yをsin関数で表すと、

\begin{displaymath}
y=\sin{2\pi (kx-\omega t)}
\end{displaymath} (1)

となります。 プログラム中では、ここでも、(座標xにおける振幅):y0と(x+dxにおける振幅):y1に分けて 計算し、それをlineで線分として図示しています。
backcolor="Black"
gScreen(500,500)
Window (-100,-2)-(100,2)
MathGraph On
ForeColor="Cyan"
randomize
k=(rnd(1)-0.5)/240+1/15
G=9.86
w=sqr(G*k)
for t=0 to 160 step 0.05
 Glocate(-50,1.5):gprint "t= "+str$(t)
 line(-100,0)-(100,0)
 line(0,-2)-(0,2)
 for x=-100 to 100
  y0=sin(2*pi*(k*x-w*t))
  y1=sin(2*pi*(k*(x+1)-w*t))
  line(x,y0)-(x+1,y1)
 next x
 cls 3
next t
end



Subsections

Takeyoshi Nagai 2013-10-07