public inbox for gsl-discuss@sourceware.org
 help / color / mirror / Atom feed
From: Tuomo Keskitalo <Tuomo.Keskitalo@iki.fi>
To: "Kevin H. Hobbs" <hobbsk@ohiou.edu>
Cc: gsl-discuss@sourceware.org, help-gsl@gnu.org
Subject: Re: ODE IV Control and Variable Scale
Date: Mon, 22 Mar 2010 17:26:00 -0000	[thread overview]
Message-ID: <4BA7A842.3020708@iki.fi> (raw)
In-Reply-To: <4BA78346.5060303@ohiou.edu>

Hi,

sorry, I did not understand your case correctly the first time. I often 
want to make sure that (fast) changes in variable values are followed 
precisely (my problems tend to be stiff) and therefore use eps_rel 
dominantly. You are right that eps_rel may well be 0. Depends on your 
problem.

On 03/22/2010 04:48 PM, Kevin H. Hobbs wrote:

> On 03/20/2010 03:18 PM, Tuomo Keskitalo wrote:
>> Hi,
>>
>> about ODE solver error tolerances: you _never_ want to set eps_rel to
>> zero. It would mean that you allow no error for the ODE solver, which is
>> something no numerical method can give you.
> 
> The ODE example program sets eps_rel to 0.0.
> 
>> As an example: gsl_odeiv_control_y_new (1e-12, 1e-8) means that if the
>> absolute value of a variable drops below 1e-12, you don't really care of
>> it's value any more (it is essentially zero for you). 
> 
> Right now I'm setting eps_abs to something like 1.0e-3.
> 
> As far as I can tell from the documentation there's nothing special
> about a variable value of 0.0 when eps_rel is 0.0. 1.0e-3 is the same as
> 0.0 and 100 + 1.0e-3 is the same as 100.
> 
> I want a constant error across the range of the variables.
> 
> eps_rel = 1e-8
>> means that you want at least 7 decimals of each variable to be accurate
>> on each ODE solver step. If you need to control the level of error with
>> more detail, then you can use a_y, a_dydt and scale_abs.
> 
> The trouble I have with these parameters is they depend on 0.0 being a
> special value, but in my model there is nothing special about 0.0 for
> most of the variables.
> 
> Voltage is the major example. Membrane voltage ranges from the reversal
> potential for potassium E_K = -80 mV to the reversal potential of sodium
> E_Na = 50 mV. The values of membrane voltage where the various membrane
> currents turn on and off are the critical values, but there are many of
> them and they are spread across the voltage range.
> 
>> A practical way to choose tolerances is to make a test and compare
>> results calculated with "strict" and "loose" eps_abs and eps_rel (order
>> of magnitude difference between strict and loose). If you get nearly
>> same values as result, you are probably safe to use your loose
>> tolerances. Of course, this depends on your problem, so be sure to test
>> it with your final computation case again.
> 
> We have a whole graduate student devoted to this testing right now.
> 
>> If you are not interested in optimizing the performance, I'd suggest you
>> simply try to use control_y_new and see how it works for you.
>>
> 
> We are very much interested in performance since we're trying to
> evaluate millions of models per day.
> 
> It appears that by using gsl_odeiv_control_scaled_new with scales
> proportional to the range of each variable, eps_rel = 0.0, a_y = 0.0,
> and a_dydt = 0.0 we can relax eps_abs and evaluate more models with
> greater accuracy.
> 


-- 
Tuomo.Keskitalo@iki.fi
http://iki.fi/tuomo.keskitalo

      reply	other threads:[~2010-03-22 17:26 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-18 18:28 Kevin H. Hobbs
2010-03-20 19:18 ` Tuomo Keskitalo
2010-03-22 14:49   ` Kevin H. Hobbs
2010-03-22 17:26     ` Tuomo Keskitalo [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4BA7A842.3020708@iki.fi \
    --to=tuomo.keskitalo@iki.fi \
    --cc=gsl-discuss@sourceware.org \
    --cc=help-gsl@gnu.org \
    --cc=hobbsk@ohiou.edu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).