指数関数とは、「微分がそれ自体に等しい」という関数である。 つまり、微分方程式 dZ/dt = Z の解が、Z = Z0 exp(t) ( Z0 は定数 ) である。 微分方程式 dZ/dt = a Z の解は、Z = Z0 exp ( a t ) になる (確認してみなさい)。 ここで Z0 は積分定数だが、t = 0 での Z の値でもあるので、 「Zの初期値」という意味でこの記号を使うことにする。
このような現象としては、次のようなものが考えられる。
シミュレーションの前に、「正解」である解析解の表を作っておこう。 計算機で表現できる数値が有限桁数であるという点では正確ではないが。
t と exp(t)がならんだ表を作るプログラム例が expfunc.p, expfunc.f, expfunc.c にある。実数は倍精度を使った。 実行が始まったら、キーボードから、
100 0.1のように、ntの値と、deltatの値を、空白で区切って入力する。 結果は標準出力に出るので、リダイレクションでファイルにとって、 gnuplotでグラフにしてみよう。 (gnuplotでは、データファイルの「#」で始まる行はコメント扱いで 表示の対象にならない。これを利用して、グラフに表示したくない 情報を同じデータファイルに入れておくことができる。 例文では、ntやdeltatの値を書き出している。なお、整数型と 倍精度実数型それぞれに合わせて書式を設定しているので、 書き出す変数を追加するときは参考にしてほしい。)
さらに、Z0 と a の値も 読みこむようにして、 t と Z0 exp ( a t ) の表を作り、いろいろな a の値に対する グラフをいっしょに表示してみよう。