Alternatywny (bardziej ogólne) składni wykreślić pochodną podaje here Viktor T. Toth
x0=NaN
y0=NaN
plot 'test.dat' using (dx=$1-x0,x0=$1,$1-dx/2):(dy=$2-y0,y0=$2,dy/dx) w l t 'dy/dx'
Objaśnienie: Modyfikator pliku danych (po przy użyciu) w nawiasach należy interpretować jako obliczone współrzędne punktu (x) :(y), obliczane wiersz po wierszu z pliku danych. Dla każdego wiersza wartości kolumn (1 $, 2 $, ...) są modyfikowane przez dozwolone operacje arytmetyczne. Wartość nawiasów jest ostatnim wyrażeniem na liście wyrażeń rozdzielanych przecinkami. Pierwsze dwa są oceniane najpierw i przechowywane w zmiennych, które są używane później i dla następnego rzędu. Kod pseudo do powyższych parametrów to:
x0 = NaN // Initialise to 'Not a number' for plot to ignore the first row
y0 = NaN
foreach row in 'test.dat' with col1 as $1, and col2 as $2:
dx = $1-x0
x0 = $1
x = $1 - dx/2 // Derivative at the midpoint of the interval
dy = $2-y0
y0 = $2
y = dy/dx
plot x:y // Put the point on the graph
dodatkową: Wyjaśnienie to może być również użyte do interpretowania @andryas roztworu pochodnej funkcyjnej D2 (x, y). Jedyna różnica polega na użyciu 0 USD. 0 $ w gnuplot to kolumna "zerowa" pliku danych, zasadniczo numer wiersza (jak w arkuszu kalkulacyjnym, po zignorowaniu linii komentarza w pliku danych). $0==0?
sprawdza, czy jest to pierwszy wiersz i przypisuje 1/0 (NaN), więc polecenie fabuły ignoruje i nie wykreśla go. Kod jest jednak poprawny tylko wtedy, gdy długość interwału jest stała (w powyższym przypadku 0,5). Z drugiej strony, kod Viktora oblicza przedział dla każdego rzędu.
Nie sądzę, że pochodna tutaj powinna zaczynać się od 0. od wyglądu twoich działek powinna być albo niezdefiniowana, albo pewna skończona wartość (w zależności od algorytmu, który OP chce zaimplementować, aby znaleźć pochodną). Ale, kudos za wysiłek na tym i +1 za demonstrację funkcji inline. – mgilson
@andyras, ciekawe podejście, powinieneś dodać trochę eksploracji. Myślę też, że można to zmodyfikować, aby wykreślić pochodną w środkowych punktach między początkowymi danymi - może wyglądać odrobinę lepiej. W końcu myślę, że znalezienie właściwego narzędzia do pracy ma tutaj zastosowanie .. – agentp
@george - Nie mogłem się zgodzić. Chociaż * możesz * to zrobić z gnuplot, nie wiem, że ty * powinieneś *.Byłoby znacznie łatwiej zrozumieć/zmodyfikować, gdybyś napisał szybki skrypt, by wziąć pochodną w innym języku i wyposażył ją w gnuplot, jak sądzę. – mgilson