how to perform Numerical differentation

Suppose I can generate infinitely many values of x and f(x). Now I need the value of f'(x) at x=1. What is the best way to find it with satisfactory accuracy.

Answers (1)

John D'Errico
John D'Errico on 24 Mar 2015
Edited: John D'Errico on 24 Mar 2015
I would use a tool that is designed to solve that problem - derivest . Of course, since I wrote the tool, that makes it obvious. It is on the File Exchange. Download the code to use it.
A nice feature of derivest is it also gives you an estimate of its uncertainty in that estimate.
So, for example...
[dydx,err] = derivest(@sin,2)
dydx =
-0.416146836547146
err =
1.5487174604626e-14
Was it correct? Looks ok to me.
cos(2)
ans =
-0.416146836547142
abs(dydx - cos(2))
ans =
3.5527136788005e-15

3 Comments

But I dont know the functional form, only numerical values of f(x) are known
With or without strong noise ?
Maybe you could include a graph ?
Best wishes
Torsten.
Nothing in that tool presumes the "functional form" is known. It merely assumes that you give it a general function, and that it can evaluate the function, then computing the derivative at your location.
It requires nothing more than that your function be smooth and moderately well-behaved. Of course, if your function contains noise, then you must use a tool that is capable of dealing with noise. In that case, I would suggest fitting a simple low order polynomial model in the vicinity of the point in question. Polyfit would then suffice.

This question is closed.

Asked:

on 24 Mar 2015

Closed:

on 20 Aug 2021

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!