<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, Solving ODE system</title>
    <link>http://www.mapleprimes.com/questions/103336-Solving-ODE-System</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 04:17:25 GMT</lastBuildDate>
    <pubDate>Fri, 12 Jun 2026 04:17:25 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, Solving ODE system</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, Solving ODE system</title>
      <link>http://www.mapleprimes.com/questions/103336-Solving-ODE-System</link>
    </image>
    <item>
      <title>dsolve events</title>
      <link>http://www.mapleprimes.com/questions/103336-Solving-ODE-System?ref=Feed:MaplePrimes:Solving ODE system:Comments#answer103391</link>
      <itunes:summary>&lt;p&gt;You need to reformulate the equation for a(t) so that it is not in terms of a(t).&amp;nbsp; The dsolve command would normally do that, but the piecewise hinders it. You also need to replace time with t. The following should do what you want&lt;/p&gt;
&lt;pre&gt;m := 5; F0 := 10; a0 := 5;&lt;br&gt;deqs := { m*a(t) = piecewise(F0/m*t &amp;lt; a0, F0*t, 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , v(t) = diff(x(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , a(t) = diff(v(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }:&lt;br&gt;ics := {x(0) = 0, v(0) = 0};&lt;br&gt;integ := dsolve( deqs union ics, numeric):&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [t,x(t)], 0..3);&lt;/pre&gt;
&lt;p&gt;Note that for the units to be consistent, F0 has dimensions of force/time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Followup&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I see that does not work past t=2.5.&amp;nbsp; One way around that is to use dsolve event handling. While this can be a bit complicated, in this case we can handle it simply by using a discrete variable (delta) whose value changes from 1 to 0 when F0/m*t-a crosses zero. A better model might pay attention to the direction---not an issue here with the given equations and initial conditions.&lt;/p&gt;
&lt;pre&gt;deqs := { m*a(t) = F0*t*delta(t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , v(t) = diff(x(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , a(t) = diff(v(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }:&lt;br&gt;&lt;br&gt;ics := {x(0) = 0, v(0) = 0, delta(0)=1};&lt;br&gt;&lt;br&gt;# Use a single event that is triggered when the acceleration&lt;br&gt;# reaches the threshold.&amp;nbsp; At that time, change delta to 0&lt;br&gt;# which causes the effective acceleration to go to 0.&lt;br&gt;evts := [[F0/m*t-a0=0, delta(t)=0]]:&lt;br&gt;&lt;br&gt;integ := dsolve( deqs union ics, 'numeric'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'events' = evts&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'discrete_variables' = [delta(t)::float]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ):&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [t,v(t)], 0..3);&lt;br&gt;&lt;br&gt;&lt;/pre&gt;</itunes:summary>
      <description>&lt;p&gt;You need to reformulate the equation for a(t) so that it is not in terms of a(t).&amp;nbsp; The dsolve command would normally do that, but the piecewise hinders it. You also need to replace time with t. The following should do what you want&lt;/p&gt;
&lt;pre&gt;m := 5; F0 := 10; a0 := 5;&lt;br&gt;deqs := { m*a(t) = piecewise(F0/m*t &amp;lt; a0, F0*t, 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , v(t) = diff(x(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , a(t) = diff(v(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }:&lt;br&gt;ics := {x(0) = 0, v(0) = 0};&lt;br&gt;integ := dsolve( deqs union ics, numeric):&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [t,x(t)], 0..3);&lt;/pre&gt;
&lt;p&gt;Note that for the units to be consistent, F0 has dimensions of force/time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Followup&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I see that does not work past t=2.5.&amp;nbsp; One way around that is to use dsolve event handling. While this can be a bit complicated, in this case we can handle it simply by using a discrete variable (delta) whose value changes from 1 to 0 when F0/m*t-a crosses zero. A better model might pay attention to the direction---not an issue here with the given equations and initial conditions.&lt;/p&gt;
&lt;pre&gt;deqs := { m*a(t) = F0*t*delta(t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , v(t) = diff(x(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , a(t) = diff(v(t), t)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }:&lt;br&gt;&lt;br&gt;ics := {x(0) = 0, v(0) = 0, delta(0)=1};&lt;br&gt;&lt;br&gt;# Use a single event that is triggered when the acceleration&lt;br&gt;# reaches the threshold.&amp;nbsp; At that time, change delta to 0&lt;br&gt;# which causes the effective acceleration to go to 0.&lt;br&gt;evts := [[F0/m*t-a0=0, delta(t)=0]]:&lt;br&gt;&lt;br&gt;integ := dsolve( deqs union ics, 'numeric'&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'events' = evts&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; , 'discrete_variables' = [delta(t)::float]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ):&lt;br&gt;&lt;br&gt;plots:-odeplot(integ, [t,v(t)], 0..3);&lt;br&gt;&lt;br&gt;&lt;/pre&gt;</description>
      <guid>103391</guid>
      <pubDate>Thu, 31 Mar 2011 08:55:05 Z</pubDate>
      <itunes:author>Joe Riel</itunes:author>
      <author>Joe Riel</author>
    </item>
    <item>
      <title>dsolve events</title>
      <link>http://www.mapleprimes.com/questions/103336-Solving-ODE-System?ref=Feed:MaplePrimes:Solving ODE system:Comments#comment103461</link>
      <itunes:summary>&lt;p&gt;Thank you. I'll try to resolve this problem.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Thank you. I'll try to resolve this problem.&lt;/p&gt;</description>
      <guid>103461</guid>
      <pubDate>Thu, 31 Mar 2011 18:39:27 Z</pubDate>
      <itunes:author>Macrohard</itunes:author>
      <author>Macrohard</author>
    </item>
  </channel>
</rss>