eknecronzontas writes:
 > The stepsize for finite-differencing in
 > gsl-1.8/multiroots/fdjacobian.c is specified by the
 > lines
 > 
 > > double xj = gsl_vector_get (x, j);
 > > double dx = epsrel * fabs (xj);
 > 
 > This is, of course mathematically correct.
 > Nevertheless, the behavior is less than ideal if one
 > of the elements of the vector 'x' is sufficiently
 > small. This occurs often if one component of the root
 > happens to be zero. If this occurs, then 'dx' can be
 > so small that one of the columns of the Jacobian is
 > identically zero. This immediately leads to NAN's
 > which are not easy to trace.

Hello, 

Thanks for your email.  I agree the behavior is not good for
small/zero x.  Probably the best thing would be to signal an error if
the step size goes to zero or the derivative overflows.  I'll add a
note to the documentation to make it clearer anyway.  

You can change the behavior with a new drop-in routine copying from
multiroots/hybrid.c into your own application, no need to modify the source.

-- 
Brian Gough

Network Theory Ltd,
Publishing the GSL Manual - http://www.network-theory.co.uk/gsl/manual/


_______________________________________________
Help-gsl mailing list
Help-gsl@gnu.org
http://lists.gnu.org/mailman/listinfo/help-gsl

Reply via email to