あなたは微分を取るように関数を定義することによってそれを行うことができます。
#!/usr/bin/env gnuplot
set term pngcairo
set output 'test.png'
# derivative functions. Return 1/0 for first point, otherwise delta y or (delta y)/(delta x)
d(y) = ($0 == 0) ? (y1 = y, 1/0) : (y2 = y1, y1 = y, y1-y2)
d2(x,y) = ($0 == 0) ? (x1 = x, y1 = y, 1/0) : (x2 = x1, x1 = x, y2 = y1, y1 = y, (y1-y2)/(x1-x2))
set key bottom left Left reverse
# offset for derivatives (half the x spacing)
dx = 0.25
plot 'data.dat' title 'data', \
'' u ($1-dx):(d($2)) title '1-variable derivative', \
'' u ($1-dx):(d2($1,$2)) title '2-variable derivative', \
'' u ($1-dx):(d2($1,$2)) smooth csplines title '2-variable derivative (smoothed)'
D2(x、y)は(あなたが探しているものはおそらくです)ちょうどデルタオーバーラン(デルタyの上の上昇を計算x)を、第1のデータ点を除いて、すべてd(y)は同じ方法でデルタyを計算する。このデータファイル
0.0 1
0.5 2
1.0 3
1.5 4
2.0 5
2.5 3
3.0 1
指定された結果は、導関数をプロットする
私は実際にはゼロから始めるべきではないと思っています。あなたのプロットの見た目からは、未定義か有限の値(OPがその導関数を見つけるために実装したいアルゴリズムに依存します)しかし、これには努力していて、インライン関数を示すために+1しています。 – mgilson
@andyras、面白いアプローチ、あなたは少しのexplinationを追加する必要があります。また、これは初期データ間の中間点で微分をプロットするように変更することができると思います。結局のところ、私は仕事のための正しいツールを見つけることはここに当てはまると思う。 – agentp
@george - 私はもっと同意できなかった。あなたはgnuplotでこれを行うことができますが、私はあなたが*すべきであることを知りません。あなたが別の言語で派生したものを入手するための簡単なスクリプトを書いて、それをgnuplotにパイプしたとすれば、理解したり変更したりする方がはるかに簡単です。 – mgilson