[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Help-gsl] Question about one dimensional root finding.
From: |
Rhys Ulerich |
Subject: |
Re: [Help-gsl] Question about one dimensional root finding. |
Date: |
Wed, 12 Sep 2012 16:40:22 -0500 |
> 2. This one works fine with some parameter set but makes error with other
> parameter sets ( gsl: newton.c:88: ERROR: function value is not finite) and
> make an exit.
>
> 3. I'd like to set the value of "x (root)" as 0 when it make error with
> certain parameters and proceed to next iteration without make an exit.
>
> How can I solve this problem.
You'll need to register a custom error handler. See the Error
handling section of the manual [1] and in particular the section on
custom error handlers [2]. You'll probably want to create an error
handler that records the error code in a static location and then
returns. Then call gsl_root_fdfsolver_newton as you do now. When an
infinite value is encountered GSL will invoke your error handler.
Your error handler will record the infinite value and return. Then
gsl_root_fdfsolver_newton will return. Now your code can check if the
infinite condition was encountered and replace the "root" returned by
gsl_root_fdfsolver_newton with 0.
[1] http://www.gnu.org/software/gsl/manual/html_node/Error-Handling.html
[2] http://www.gnu.org/software/gsl/manual/html_node/Error-Handlers.html
Hope that helps,
Rhys