Azzera filtri
Azzera filtri

Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

how to perform Numerical differentation

1 visualizzazione (ultimi 30 giorni)
suvadip paul
suvadip paul il 24 Mar 2015
Chiuso: MATLAB Answer Bot il 20 Ago 2021
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.

Risposte (1)

John D'Errico
John D'Errico il 24 Mar 2015
Modificato: John D'Errico il 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 Commenti
Torsten
Torsten il 24 Mar 2015
With or without strong noise ?
Maybe you could include a graph ?
Best wishes
Torsten.
John D'Errico
John D'Errico il 24 Mar 2015
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.

Questa domanda è chiusa.

Community Treasure Hunt

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

Start Hunting!

Translated by