This is the mail archive of the gsl-discuss@sourceware.org mailing list for the GSL project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: ODE IV Control and Variable Scale


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.

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). 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.

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.

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.

Regards,
Tuomo

On 03/18/2010 08:27 PM, Kevin H. Hobbs wrote:

I'm trying make sure that I am using the gsl_odeiv_control functions
correctly.

I'm modelling neurons and my variables have different scales. Voltage is
usually between -100 and 50 mV. The membrane current gating variables
stay between 0 and 1. Internal calcium concentration is usually between
0 and a few hundred micro molar.

Each time I read the descriptions of the gsl_odeiv_control functions I
become more convinced that the parameters eps_rel, a_y, and a_dydt are
there to excuse some error in variables and derivatives that are far
from zero. Is that correct?

Since I have no reason to care more about values close to zero (unless I
do some complicated remapping of the variable values) should I set
eps_rel, a_y, and a_dydt to 0?

Since my variables have different ranges should I use
gsl_odeiv_control_scaled_new with an appropriate eps_abs and scale_abs
set with something like 1 for internal calcium concentration, 0.3 for
membrane voltage, and 0.001 for all of the gating variables?



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]