Commit a390f109 authored by Davis King's avatar Davis King

Made approximate derivative calculation slightly more numerically robust.

parent ff9f597a
...@@ -42,7 +42,7 @@ namespace dlib ...@@ -42,7 +42,7 @@ namespace dlib
e(i) = old_val - eps; e(i) = old_val - eps;
const double delta_minus = f(e); const double delta_minus = f(e);
der(i) = (delta_plus - delta_minus)/(2*eps); der(i) = (delta_plus - delta_minus)/((old_val+eps)-(old_val-eps));
// and finally restore the old value of this element // and finally restore the old value of this element
e(i) = old_val; e(i) = old_val;
...@@ -68,7 +68,7 @@ namespace dlib ...@@ -68,7 +68,7 @@ namespace dlib
e(i) = old_val - eps; e(i) = old_val - eps;
const double delta_minus = f(item,e); const double delta_minus = f(item,e);
der(i) = (delta_plus - delta_minus)/(2*eps); der(i) = (delta_plus - delta_minus)/((old_val+eps)-(old_val-eps));
// and finally restore the old value of this element // and finally restore the old value of this element
e(i) = old_val; e(i) = old_val;
...@@ -80,7 +80,7 @@ namespace dlib ...@@ -80,7 +80,7 @@ namespace dlib
double operator()(const double& x) const double operator()(const double& x) const
{ {
return (f(x+eps)-f(x-eps))/(2*eps); return (f(x+eps)-f(x-eps))/((x+eps)-(x-eps));
} }
private: private:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment