フィルターのクリア

Info

この質問は閉じられています。 編集または回答するには再度開いてください。

how to perform Numerical differentation

1 回表示 (過去 30 日間)
suvadip paul
suvadip paul 2015 年 3 月 24 日
閉鎖済み: MATLAB Answer Bot 2021 年 8 月 20 日
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.

回答 (1 件)

John D'Errico
John D'Errico 2015 年 3 月 24 日
編集済み: John D'Errico 2015 年 3 月 24 日
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 件のコメント
Torsten
Torsten 2015 年 3 月 24 日
With or without strong noise ?
Maybe you could include a graph ?
Best wishes
Torsten.
John D'Errico
John D'Errico 2015 年 3 月 24 日
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.

この質問は閉じられています。

Community Treasure Hunt

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

Start Hunting!

Translated by