<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, dsolve, events: how to build an efficient loop</title>
    <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Fri, 12 Jun 2026 13:10:49 GMT</lastBuildDate>
    <pubDate>Fri, 12 Jun 2026 13:10:49 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, dsolve, events: how to build an efficient loop</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, dsolve, events: how to build an efficient loop</title>
      <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop</link>
    </image>
    <item>
      <title>Use a discrete variable in events</title>
      <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop?ref=Feed:MaplePrimes:dsolve, events: how to build an efficient loop:Comments#answer125627</link>
      <itunes:summary>&lt;p&gt;Is this what you want:&lt;/p&gt;
&lt;pre&gt;sys := { NULL&lt;br&gt;         , diff(y(t),t) + y(t) = 0&lt;br&gt;         , y(0) = 1&lt;br&gt;         , s(0) = 1&lt;br&gt;       }:&lt;br&gt;&lt;br&gt;integ := dsolve( sys&lt;br&gt;                 , 'numeric'&lt;br&gt;                 , 'events' = [[y(t)=10^(-s(t)), [s(t)=s(t)+1]]]&lt;br&gt;                 , 'discrete_variables' = [s(t)]&lt;br&gt;               );&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [s(t),t], 0..10);&lt;/pre&gt;</itunes:summary>
      <description>&lt;p&gt;Is this what you want:&lt;/p&gt;
&lt;pre&gt;sys := { NULL&lt;br&gt;         , diff(y(t),t) + y(t) = 0&lt;br&gt;         , y(0) = 1&lt;br&gt;         , s(0) = 1&lt;br&gt;       }:&lt;br&gt;&lt;br&gt;integ := dsolve( sys&lt;br&gt;                 , 'numeric'&lt;br&gt;                 , 'events' = [[y(t)=10^(-s(t)), [s(t)=s(t)+1]]]&lt;br&gt;                 , 'discrete_variables' = [s(t)]&lt;br&gt;               );&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [s(t),t], 0..10);&lt;/pre&gt;</description>
      <guid>125627</guid>
      <pubDate>Wed, 14 Sep 2011 18:46:27 Z</pubDate>
      <itunes:author>Joe Riel</itunes:author>
      <author>Joe Riel</author>
    </item>
    <item>
      <title>Another approach</title>
      <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop?ref=Feed:MaplePrimes:dsolve, events: how to build an efficient loop:Comments#answer125725</link>
      <itunes:summary>&lt;p&gt;Here is another approach, shown to me by Allan, based on eventfired, see below&lt;/p&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;http://www.mapleprimes.com/questions/125273-Dsolve-Events-How-To-Control-For-A-Sign-Change#comment125426&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;This approach also relies on reinitializing the integrator, there seems to be no way to record event dates on the fly.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;I am reporting about here for the record, for myself and (hopefully) someone else.&lt;br&gt;&lt;br&gt;Here is the system on which I based my tests:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;t0:=0: t1 := 25:&lt;br&gt;Sol := dsolve( &lt;br&gt;&amp;nbsp; [ diff(y(t),t) = -y(t), y(t0) = 1, p(t0) = 1/10 ]&lt;br&gt;&amp;nbsp; , 'type' = numeric&lt;br&gt;&amp;nbsp; , 'discrete_variables' = [ p(t)::float ]&lt;br&gt;&amp;nbsp; , 'events' = [ [ y(t) = p(t), [ p(t) = p(t)/10, 'halt' ] ]&amp;nbsp; ]&lt;br&gt;) ;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;The main loop suggested by Allan goes as follows:&lt;br&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;&lt;br&gt;A := Array([0]):&lt;br&gt;Sol(1e-6):&lt;br&gt;while A[-1] &amp;lt; tf do&lt;br&gt;&amp;nbsp; Sol(t1):&lt;br&gt;&amp;nbsp; A(ArrayNumElems(A)+1) := Sol(eventfired=[1])[1]:&lt;br&gt;&amp;nbsp; Sol(eventclear):&lt;br&gt;end do;&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;&lt;br&gt;A slightly more versatile loop may be written, to allow for integration forward and backward.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;RecordEventDates := proc(dsol,range)&lt;br&gt;&amp;nbsp; local A,ts,tf;&lt;br&gt;&amp;nbsp; description "the first argument is the output of dsolve&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , the second argument is the range of integration&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , based on suggestions by Erik Postma, Joe Riel, Allan Wittkopf" ;&lt;br&gt;&amp;nbsp; interface(warnlevel=0);&lt;br&gt;&amp;nbsp; ts:=lhs(range); tf:=rhs(range);&lt;br&gt;&amp;nbsp; A := Array([0]);&lt;br&gt;&amp;nbsp; if tf&amp;gt;ts then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(ts+1e-6); # may need tweaking&lt;br&gt;&amp;nbsp; elif tf&amp;lt;ts then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(ts-1e-6); &lt;br&gt;&amp;nbsp; else break; &lt;br&gt;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp; while A[-1] &amp;lt; tf do&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(tf):&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A(ArrayNumElems(A)+1) := dsol(eventfired=[1])[1]:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dsol(eventstop)=1 then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(eventclear);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif dsol(eventstop)=0 then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp; end do;&lt;br&gt;&amp;nbsp; if ArrayNumElems(A) &amp;lt; 3 then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A := []; A;&lt;br&gt;&amp;nbsp; else &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A := convert(A,list); A[2..-2]; &lt;br&gt;&amp;nbsp; end if;&lt;br&gt;end proc:&lt;br&gt;A := RecordEventDates(Sol,t0 .. t1);&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;&lt;img src="data:image/png;base64,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" alt=""&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;&lt;br&gt;This works on a small number of examples I have tested. It probably needs tweaking, especially the part where the integration is reinitialized. If I've done it right, it will return an empty list if the event has not triggered. It caters only for one event right now, the bit eventfired=[1] would need to be changed to accommodate for more events. I bet there are some redundant lines of code, but at this time it's doing the job I need, I think. I hope.&lt;br&gt;&lt;/span&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Here is another approach, shown to me by Allan, based on eventfired, see below&lt;/p&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;http://www.mapleprimes.com/questions/125273-Dsolve-Events-How-To-Control-For-A-Sign-Change#comment125426&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;This approach also relies on reinitializing the integrator, there seems to be no way to record event dates on the fly.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;I am reporting about here for the record, for myself and (hopefully) someone else.&lt;br&gt;&lt;br&gt;Here is the system on which I based my tests:&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;t0:=0: t1 := 25:&lt;br&gt;Sol := dsolve( &lt;br&gt;&amp;nbsp; [ diff(y(t),t) = -y(t), y(t0) = 1, p(t0) = 1/10 ]&lt;br&gt;&amp;nbsp; , 'type' = numeric&lt;br&gt;&amp;nbsp; , 'discrete_variables' = [ p(t)::float ]&lt;br&gt;&amp;nbsp; , 'events' = [ [ y(t) = p(t), [ p(t) = p(t)/10, 'halt' ] ]&amp;nbsp; ]&lt;br&gt;) ;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;The main loop suggested by Allan goes as follows:&lt;br&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;&lt;br&gt;A := Array([0]):&lt;br&gt;Sol(1e-6):&lt;br&gt;while A[-1] &amp;lt; tf do&lt;br&gt;&amp;nbsp; Sol(t1):&lt;br&gt;&amp;nbsp; A(ArrayNumElems(A)+1) := Sol(eventfired=[1])[1]:&lt;br&gt;&amp;nbsp; Sol(eventclear):&lt;br&gt;end do;&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;&lt;br&gt;A slightly more versatile loop may be written, to allow for integration forward and backward.&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;RecordEventDates := proc(dsol,range)&lt;br&gt;&amp;nbsp; local A,ts,tf;&lt;br&gt;&amp;nbsp; description "the first argument is the output of dsolve&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , the second argument is the range of integration&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , based on suggestions by Erik Postma, Joe Riel, Allan Wittkopf" ;&lt;br&gt;&amp;nbsp; interface(warnlevel=0);&lt;br&gt;&amp;nbsp; ts:=lhs(range); tf:=rhs(range);&lt;br&gt;&amp;nbsp; A := Array([0]);&lt;br&gt;&amp;nbsp; if tf&amp;gt;ts then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(ts+1e-6); # may need tweaking&lt;br&gt;&amp;nbsp; elif tf&amp;lt;ts then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(ts-1e-6); &lt;br&gt;&amp;nbsp; else break; &lt;br&gt;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp; while A[-1] &amp;lt; tf do&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(tf):&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A(ArrayNumElems(A)+1) := dsol(eventfired=[1])[1]:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dsol(eventstop)=1 then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dsol(eventclear);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elif dsol(eventstop)=0 then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end if;&lt;br&gt;&amp;nbsp; end do;&lt;br&gt;&amp;nbsp; if ArrayNumElems(A) &amp;lt; 3 then &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A := []; A;&lt;br&gt;&amp;nbsp; else &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; A := convert(A,list); A[2..-2]; &lt;br&gt;&amp;nbsp; end if;&lt;br&gt;end proc:&lt;br&gt;A := RecordEventDates(Sol,t0 .. t1);&lt;br&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;span class="mainBody document"&gt;&lt;img src="data:image/png;base64,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" alt=""&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;span class="mainBody document"&gt;&lt;br&gt;This works on a small number of examples I have tested. It probably needs tweaking, especially the part where the integration is reinitialized. If I've done it right, it will return an empty list if the event has not triggered. It caters only for one event right now, the bit eventfired=[1] would need to be changed to accommodate for more events. I bet there are some redundant lines of code, but at this time it's doing the job I need, I think. I hope.&lt;br&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <guid>125725</guid>
      <pubDate>Sat, 17 Sep 2011 13:36:59 Z</pubDate>
      <itunes:author>PatrickT</itunes:author>
      <author>PatrickT</author>
    </item>
    <item>
      <title>For determining the time at which this happens slightly more easily</title>
      <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop?ref=Feed:MaplePrimes:dsolve, events: how to build an efficient loop:Comments#comment125630</link>
      <itunes:summary>&lt;p&gt;I would tweak your (nice) solution a little bit, Joe:&lt;/p&gt;
&lt;pre&gt;sys := { NULL&lt;br&gt;         , diff(y(t),t) + y(t) = 0&lt;br&gt;         , y(0) = 1&lt;br&gt;         , s(0) = 0&lt;br&gt;         , p(0) = 0.1&lt;br&gt;       }:&lt;br&gt;&lt;br&gt;integ := dsolve( sys&lt;br&gt;                 , 'numeric'&lt;br&gt;                 , 'events' = [[y(t)=p(t), [s(t)=t, p(t) = p(t)/10]]]&lt;br&gt;                 , 'discrete_variables' = [s(t), p(t)]&lt;br&gt;               );&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [t, p(t)], t=0..25, axis[2]=[mode=log]);&lt;br&gt;plots:-odeplot(integ, [t, s(t)], t=0..25);&lt;/pre&gt;
&lt;p&gt;This way p(t) holds the next "boundary" to be tested against, and s(t) holds the time at which the last boundary was achieved.&lt;/p&gt;
&lt;p&gt;Hope this helps,&lt;/p&gt;
&lt;p&gt;Erik Postma&lt;br&gt;Maplesoft.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;I would tweak your (nice) solution a little bit, Joe:&lt;/p&gt;
&lt;pre&gt;sys := { NULL&lt;br&gt;         , diff(y(t),t) + y(t) = 0&lt;br&gt;         , y(0) = 1&lt;br&gt;         , s(0) = 0&lt;br&gt;         , p(0) = 0.1&lt;br&gt;       }:&lt;br&gt;&lt;br&gt;integ := dsolve( sys&lt;br&gt;                 , 'numeric'&lt;br&gt;                 , 'events' = [[y(t)=p(t), [s(t)=t, p(t) = p(t)/10]]]&lt;br&gt;                 , 'discrete_variables' = [s(t), p(t)]&lt;br&gt;               );&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [t, p(t)], t=0..25, axis[2]=[mode=log]);&lt;br&gt;plots:-odeplot(integ, [t, s(t)], t=0..25);&lt;/pre&gt;
&lt;p&gt;This way p(t) holds the next "boundary" to be tested against, and s(t) holds the time at which the last boundary was achieved.&lt;/p&gt;
&lt;p&gt;Hope this helps,&lt;/p&gt;
&lt;p&gt;Erik Postma&lt;br&gt;Maplesoft.&lt;/p&gt;</description>
      <guid>125630</guid>
      <pubDate>Wed, 14 Sep 2011 23:32:27 Z</pubDate>
      <itunes:author>epostma</itunes:author>
      <author>epostma</author>
    </item>
    <item>
      <title>nice</title>
      <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop?ref=Feed:MaplePrimes:dsolve, events: how to build an efficient loop:Comments#comment125631</link>
      <itunes:summary>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop#comment125630"&gt;@epostma&lt;/a&gt; Nice extension.&amp;nbsp; Saving the event-time explicitly is a useful technique.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;&lt;a href="http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop#comment125630"&gt;@epostma&lt;/a&gt; Nice extension.&amp;nbsp; Saving the event-time explicitly is a useful technique.&lt;/p&gt;</description>
      <guid>125631</guid>
      <pubDate>Thu, 15 Sep 2011 00:00:32 Z</pubDate>
      <itunes:author>Joe Riel</itunes:author>
      <author>Joe Riel</author>
    </item>
    <item>
      <title>creating a list</title>
      <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop?ref=Feed:MaplePrimes:dsolve, events: how to build an efficient loop:Comments#comment125632</link>
      <itunes:summary>&lt;p&gt;Thanks Joe, Thanks Erik,&lt;/p&gt;
&lt;p&gt;your suggestion Joe has helped me a great deal in understanding how to use discrete variables. I was getting ready to post a follow-up question just as Erik posted his suggestion. Seeing Erik's suggestion I'm pleased to see that I was on the right track. But I got stuck at the point of trying to make a list of the dates. And having spent an hour (at least) on this without success, I turn to you again for advice.&lt;/p&gt;
&lt;p&gt;I had adapted Joe's code like this:&lt;/p&gt;
&lt;p&gt;Sol :=&lt;br&gt;&amp;nbsp; dsolve( [ diff(y(t),t) = -y(t), y(0) = 1, p(0) = 1, s(0) = 0 ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'type' = numeric&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'discrete_variables' = [ p(t), s(t) ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'events' = [ [ y(t) = 10^(-p(t)), [ p(t) = p(t)+1, s(t) = t ] ] ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'output' = listprocedure&lt;br&gt;&amp;nbsp; ) ;&lt;/p&gt;
&lt;p&gt;in order to extract time like this:&lt;/p&gt;
&lt;p&gt;tSol := subs(Sol, s(t));&lt;br&gt;plot(tSol, 0..10);&lt;/p&gt;
&lt;p&gt;I didn't use odeplot because I'm primarily interested in extracting the data in a list. Using listprocedure is the method that I'm aware of.&lt;/p&gt;
&lt;p&gt;It's also very helpful to see Erik's different way of setting up the p(t).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;But here I got stuck. The values of time I want to extract are in the procedure named tSol. I tried strange things like trying to solve tSol=t, but didn't manage to get it to work. I would like to have a list of the dates at which p(t) changes.&lt;/p&gt;
&lt;p&gt;thanks a lot,&lt;/p&gt;
&lt;p&gt;Patrick.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Thanks Joe, Thanks Erik,&lt;/p&gt;
&lt;p&gt;your suggestion Joe has helped me a great deal in understanding how to use discrete variables. I was getting ready to post a follow-up question just as Erik posted his suggestion. Seeing Erik's suggestion I'm pleased to see that I was on the right track. But I got stuck at the point of trying to make a list of the dates. And having spent an hour (at least) on this without success, I turn to you again for advice.&lt;/p&gt;
&lt;p&gt;I had adapted Joe's code like this:&lt;/p&gt;
&lt;p&gt;Sol :=&lt;br&gt;&amp;nbsp; dsolve( [ diff(y(t),t) = -y(t), y(0) = 1, p(0) = 1, s(0) = 0 ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'type' = numeric&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'discrete_variables' = [ p(t), s(t) ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'events' = [ [ y(t) = 10^(-p(t)), [ p(t) = p(t)+1, s(t) = t ] ] ]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'output' = listprocedure&lt;br&gt;&amp;nbsp; ) ;&lt;/p&gt;
&lt;p&gt;in order to extract time like this:&lt;/p&gt;
&lt;p&gt;tSol := subs(Sol, s(t));&lt;br&gt;plot(tSol, 0..10);&lt;/p&gt;
&lt;p&gt;I didn't use odeplot because I'm primarily interested in extracting the data in a list. Using listprocedure is the method that I'm aware of.&lt;/p&gt;
&lt;p&gt;It's also very helpful to see Erik's different way of setting up the p(t).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;But here I got stuck. The values of time I want to extract are in the procedure named tSol. I tried strange things like trying to solve tSol=t, but didn't manage to get it to work. I would like to have a list of the dates at which p(t) changes.&lt;/p&gt;
&lt;p&gt;thanks a lot,&lt;/p&gt;
&lt;p&gt;Patrick.&lt;/p&gt;</description>
      <guid>125632</guid>
      <pubDate>Thu, 15 Sep 2011 00:35:26 Z</pubDate>
      <itunes:author>PatrickT</itunes:author>
      <author>PatrickT</author>
    </item>
    <item>
      <title>NULL</title>
      <link>http://www.mapleprimes.com/questions/125614-Dsolve-Events-How-To-Build-An-Efficient-Loop?ref=Feed:MaplePrimes:dsolve, events: how to build an efficient loop:Comments#comment125633</link>
      <itunes:summary>&lt;p&gt;Oh and I also wanted to ask,&lt;/p&gt;
&lt;p&gt;what is the purpose of having NULL in the definition of the ODE system?&lt;/p&gt;
&lt;p&gt;thanks.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Oh and I also wanted to ask,&lt;/p&gt;
&lt;p&gt;what is the purpose of having NULL in the definition of the ODE system?&lt;/p&gt;
&lt;p&gt;thanks.&lt;/p&gt;</description>
      <guid>125633</guid>
      <pubDate>Thu, 15 Sep 2011 00:37:16 Z</pubDate>
      <itunes:author>PatrickT</itunes:author>
      <author>PatrickT</author>
    </item>
  </channel>
</rss>