# How do I plot the derivative of a set of experimental points?

I have a set of points like this: P = {{$x_1$,$y_1$},{$x_2$,$y_2$},...,{$x_n$,$y_n$}}. I want to plot them and also plot the derivative of that graph. How can I do this with Mathematica? Is there a simple way in Mathematica?

-
In this answer to a related question I suggested to use DerivativeFilter for this purpose. That answer would apply here too (I guess the questions are somewhat different but I tried to make my earlier answer more general so that it now turns out to cover your case...) – Jens Nov 27 '12 at 3:52
Oh, thanks for the answer. – Ana Nov 27 '12 at 5:02

Here is some sample data, hopefully of the sort you are looking for

a=Table[{i, i^2 - 3 i + 2 + 0.3 Random[]}, {i, -1, 3, 0.1}];
ListPlot[a]


will display the data.

This will create a derivable interpolation.

b = Interpolation[a, Method -> "Spline"];


This is its derivative

c = b';


Plot them together.

Plot[Evaluate[{b[x], c[x]}], {x, -1, 3}]


-
Now, you may also want to try FindFit, based on the model that represents your experimental data, and then take derivate of the function. – Zviovich Nov 27 '12 at 3:15
Yeah, it worked. Thanks. – Ana Nov 27 '12 at 5:01
Finite differences and interpolation will give a somewhat smoother fit. That might or might not be desirable depending on actual needs. Here is the code to compare to. d = .1; derivs = Table[(a[[j + 1, 2]] - a[[j-1, 2]])/(2*d), {j, 2, Length[a] - 1}];derivs2 = Transpose[{Range[-1 + .1, 3 - .1, .1], derivs}]; c = Interpolation[derivs2, Method -> "Spline"]; – Daniel Lichtblau Nov 28 '12 at 17:43

This is the data (taken from the previous example):

a = Table[{i, i^2 - 3 i + 2 + 0.3 Random[]}, {i, -1, 3, 0.1}];


This is derivatives calculated in each point except the first:

derA = Differences[a] /. {x_, y_} -> y/x;


here we combine it into the list of pairs:

lst=Transpose[{Drop[Transpose[a][[1]], 1], derA}];


Now we can plot it along with the initial list:

    ListLinePlot[{a, Transpose[{Drop[Transpose[a][[1]], 1], derA}]},
PlotStyle -> {Blue, Red}]


That is what you get:

-