[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help with ODE solver

From: John W. Eaton
Subject: Re: Help with ODE solver
Date: Fri, 13 Sep 2002 11:16:14 -0500

On 13-Sep-2002, Marco Antoniotti <address@hidden> wrote:

| > Yes, that would be one way, but then you would need to make all those
| > t_crit_N values global.
| I thing I cannot avoid it.  As it is, and because I need to be
| selective about what I plot, I alread make the initial_contitions
| global.
| > It might make more sense to use a vector of
| > values and a loop in your RHS function.
| Sorry, but I do not understand this.  Why would you want to do that?
| > Or, you could vectorize it depending on how your time-dependent
| > parameter values are stored. 
| Again I do not understand this.

OK, suppose you have a vector of N parameters and another vector of N
points that mark the beginnings of the intervals for which those
parameters are valid:

       p1     p2     ..     pN
    t1     t2     ..     tN    

  p = [p1, p2, ..., pN];
  tcrit = [t1, t2, ..., tN];

then you can write

  tmp = find (t >= tcrit);
  i = tmp (length (tmp));

then p(i) is the parameter you want.

For example, use p = 10*(1:9), tcrit = 1:9, and t >= 0 and evaluate
the expressions

  t >= tcrit
  tmp = find (t >= tcrit)
  length (tmp)
  i = tmp (length (tmp))

to see how this will work.  Note that you could also use:

  i = sum (t >= tcrit)

instead of find and length, or if you don't actually need i, you can
write the entire expression as

  p (sum (t >= tcrit))

This is going to be much faster than a set of if/elseif conditions,
especially as the number of parameters becomes large.

The tcrit vector should be the same set of values that you pass to
lsode as the tcrit argument.  I would make it global and define it in
one place.  I would probably also make p global and define it
somewhere near the definition of tcrit so that their relationship is


Octave is freely available under the terms of the GNU GPL.

Octave's home on the web:
How to fund new projects:
Subscription information:

reply via email to

[Prev in Thread] Current Thread [Next in Thread]