Re: how can one use mathematica get the approximate derivative of {x,y} data points?
- To: mathgroup at smc.vnet.net
- Subject: [mg124315] Re: how can one use mathematica get the approximate derivative of {x,y} data points?
- From: Barrie Stokes <Barrie.Stokes at newcastle.edu.au>
- Date: Mon, 16 Jan 2012 17:15:02 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
HI Michael Here is one way, that I think is transparent enough for you to see what is happening: (* create some data *) data = Table[ {x, Sin[ Exp[ x ] ]}, {x, 0, 1.7, 0.05} ] (* visualize the underlying function *) p1 = ListPlot[ data ]; p2 = ListPlot[ data, Joined -> True, PlotStyle -> {PointSize[ 0.5 ]} ]; Show[ {p1, p2} ] (* create an InterpolatingFunction object for this data *) interp = Interpolation[ data, InterpolationOrder -> 5, Method -> "Spline" ] (* check that it looks right, i.e., represents the data *) p3 = Plot[ interp[x], {x, 0, 1.7} ]; Show[ {p1, p3} ] (* create a derivative of this InterpolatingFunction object for this \ data *)interpD[x_] := \!\( \*SubscriptBox[\(\[PartialD]\), \(t\)]\ \(interp[t]\)\) /. {t -> x} interpD[x] (* visualize the derivative *) p4 = Plot[ interpD[x], {x, 0, 1.7} ] (* the true derivative behind our data *) \!\(\*SubscriptBox[\(\[PartialD]\), \(x\)]\ \(Sin[\ Exp[\ x\ ]\ \ ]\)\) p5 = Plot[ E^x Cos[E^x], {x, 0, 1.7} ] (* the derivative of the Interpolation gives a good approximation *) p6 = Plot[ E^x Cos[E^x] - interpD[x], {x, 0, 1.7} ] (* create a list of derivative values at the original abscissae *) dataD = Table[ {x, interpD[x]}, {x, 0, 1.7, 0.02} ] You'll doubtless get a variety of suggestions, as this is a fairly straightforward task for an experienced Mathematican. Best Barrie >>> On 14/01/2012 at 6:53 pm, in message <201201140753.CAA01265 at smc.vnet.net>, "Michael B. Heaney" <mheaney at alum.mit.edu> wrote: > Hi, > > I have a set of {x,y} data points: > > {{0.03512, -0.5}, {0.0351181, -0.499}, ... {-0.113972, 0.699}, {-0.115072, > 0.7}} > > These data points look like a function y=f(x) when plotted on the x-y axes. > However, I do not know what the function f(x) is. But I need to get the > approximate derivative df/dx, as another set of data points. How can one > use Mathematica to do this? > > Thanks, > > Michael > > --