gnuplotを用いた関数の微分

関数が定義できている場合は、微分の定義を使うことで簡単に関数の微分をプロットすることができます。以下に例を示します。

f(x)=sin(x)
dx=0.00001
plot f(x), (f(x+dx)-f(x-dx))/(2.0*dx)

このスクリプトの実行例は以下のようになります。下図のように、元の関数(sin(x);赤線)が微分されてcos(x)(緑線)になっていることがわかります。

微分した結果をファイルに保存したい場合はset table "***"を使います。

f(x)=sin(x)
dx=0.00001
set table "diff_func_output.txt"
plot f(x), (f(x+dx)-f(x-dx))/(2.0*dx)
unset table

するとこちらのようなファイルができます。

ファイルに保存するときxとf(x)とdf/dxが同じ行になるようにしたい場合は、以下のように擬似ファイル"+"を用いるとよいでしょう。(gnuplot4.3以降が必要)

f(x)=sin(x)
dx=0.00001
set table "diff_func_output2.txt"
splot "+" using 1:(f($1)):((f($1+dx)-f($1-dx))/(2.0*dx))
unset table

この例の出力ファイルはこちらです。