9.4 簡易アニメーション

スクリプトを reread することによって、簡単なアニメーションが実現出来ます。

偏微分方程式論で有名な熱方程式の基本解

$\displaystyle U(x,t)=\frac{1}{\sqrt{4\pi t}}\exp\left(-\frac{x^2}{4t}\right)
$

は、時刻 $ t=0$ で数直線上の原点に単位熱量をおいて、 それ以降は熱伝導によって熱が流れて行った場合の、 時刻 $ t$, 場所 $ x$ における温度を表します。

anim.gp
plot [-10:10] [0:1] u(x,t)
t=t+dt
if (t<Tmax) reread
のようなファイル “anim.gp” を用意しておいて、 gnuplot で
gnuplot> u(x,t)=exp(-x*x/(4*t))/sqrt(4*pi*t)
gnuplot> t=0.1
gnuplot> Tmax=5
gnuplot> dt=0.01
gnuplot> load "anim.gp"
とすると $ t=0.1$ から $ 0.01$ 刻みで $ t=5$ まで、 $ u(\cdot ,t)$ のグラフが描けます。

ここでは静止画で我慢。

図 21: $ t=1,2,3,4$ での $ u(\cdot ,t)$ のグラフ
\includegraphics[width=10cm]{eps/heat.eps}

(工夫すれば GIF アニメーションとか作れそうですね。 … set term gif animate として set output "なんとか.gif" とするだけでした。)

http://nalab.mind.meiji.ac.jp/~mk/labo/text/heat-kernel.gif


(2017/11/7 加筆) gnuplot ver 4.6 から、do for という新しい構文が導入されて、 それを使うと、次のように書ける。
Tmax=5.0
Nmax=500
dt=Tmax/Nmax
u(x,t)=exp(-x*x/(4*t))/sqrt(4*pi*t)
do for [i=1:Nmax] {
   t=i*dt
   plot [-10:10] [0:1] u(x,t)
}
(最初 Tmax=5 としたら、 dt0 になってハマってしまった。)



Subsections

桂田 祐史