<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - answers and comments on Question, Trouble with RK4 (Runge-Kutta)!</title>
    <link>http://www.mapleprimes.com/questions/142201-Trouble-With-RK4-RungeKutta</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Tue, 09 Jun 2026 14:15:04 GMT</lastBuildDate>
    <pubDate>Tue, 09 Jun 2026 14:15:04 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest answers and comments added to the Question, Trouble with RK4 (Runge-Kutta)!</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - answers and comments on Question, Trouble with RK4 (Runge-Kutta)!</title>
      <link>http://www.mapleprimes.com/questions/142201-Trouble-With-RK4-RungeKutta</link>
    </image>
    <item>
      <title>Several problems</title>
      <link>http://www.mapleprimes.com/questions/142201-Trouble-With-RK4-RungeKutta?ref=Feed:MaplePrimes:Trouble with RK4 (Runge-Kutta)!:Comments#answer142203</link>
      <itunes:summary>&lt;p&gt;Your system seems to be {diff(x(t), t) = v(t), and diff(v(t), t) = a(x(t), v(t))}, where a is a function of two variables. However, that function is never made concrete.&lt;/p&gt;
&lt;p&gt;The multiplication sign in Maple is *, not a dot (used for matrix multiplication though).&lt;/p&gt;
&lt;p&gt;What are v and a in the lines xn := xo+v.dt; and vn := vo+a.dt; ?&lt;/p&gt;
&lt;p&gt;There may be more problems.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Your system seems to be {diff(x(t), t) = v(t), and diff(v(t), t) = a(x(t), v(t))}, where a is a function of two variables. However, that function is never made concrete.&lt;/p&gt;
&lt;p&gt;The multiplication sign in Maple is *, not a dot (used for matrix multiplication though).&lt;/p&gt;
&lt;p&gt;What are v and a in the lines xn := xo+v.dt; and vn := vo+a.dt; ?&lt;/p&gt;
&lt;p&gt;There may be more problems.&lt;/p&gt;</description>
      <guid>142203</guid>
      <pubDate>Fri, 11 Jan 2013 21:03:07 Z</pubDate>
      <itunes:author>Preben Alsholm</itunes:author>
      <author>Preben Alsholm</author>
    </item>
    <item>
      <title>Preben Alsholm 3425</title>
      <link>http://www.mapleprimes.com/questions/142201-Trouble-With-RK4-RungeKutta?ref=Feed:MaplePrimes:Trouble with RK4 (Runge-Kutta)!:Comments#answer142222</link>
      <itunes:summary>&lt;p&gt;Thanks for your help. Preben. As you said, i changed things a little bit in the program. Now it looks like this:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;restart;&lt;/p&gt;
&lt;p&gt;A := Matrix();&lt;/p&gt;
&lt;p&gt;dt := 0.1e-2;&lt;/p&gt;
&lt;p&gt;diff(xo(t), t) := vo;&lt;/p&gt;
&lt;p&gt;diff(vo, t) := a(xo(t), vo);&lt;/p&gt;
&lt;p&gt;xo(t) := 1; vo := 0;&lt;/p&gt;
&lt;p&gt;for i to 1000 do&lt;/p&gt;
&lt;p&gt;xn := xo(t)+vo*dt; vn := vo+a*dt;&lt;/p&gt;
&lt;p&gt;dx1 := vn*dt; dv1 := a*dt;&lt;/p&gt;
&lt;p&gt;dx2 := (vn+(1/2)*dv1)*dt; dv2 := a(x+(1/2)*dx1, (1/2)*dv1)*dt;&lt;/p&gt;
&lt;p&gt;dx3 := (vn+(1/2)*dv2)*dt; dv3 := a(xn+(1/2)*dx2, vn+(1/2)*dv2)*dt;&lt;/p&gt;
&lt;p&gt;dx4 := (vn+dv3)*dt; dv4 := a(xn+dx3, vn+dv3)*dt;&lt;/p&gt;
&lt;p&gt;xn := evalf((xo(t)+dx1+2*dx2+2*dx3+dx4)*(1/6)); vn := evalf((vo+dv1+2*dv2+2*dv3+dv4)*(1/6));&lt;/p&gt;
&lt;p&gt;A(i, 1) := xn; A(i, 2) := vn; A(i, 3) := i*dt;&lt;/p&gt;
&lt;p&gt;xo(t) := xn;&lt;/p&gt;
&lt;p&gt;vo := vn&lt;/p&gt;
&lt;p&gt;end do;&lt;/p&gt;
&lt;p&gt;ExportMatrix("RK4.txt", A)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;One thing I didn't understand is what do you mean with "a" not being concrete.&lt;/p&gt;
&lt;p&gt;Thanks once again&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Thanks for your help. Preben. As you said, i changed things a little bit in the program. Now it looks like this:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;restart;&lt;/p&gt;
&lt;p&gt;A := Matrix();&lt;/p&gt;
&lt;p&gt;dt := 0.1e-2;&lt;/p&gt;
&lt;p&gt;diff(xo(t), t) := vo;&lt;/p&gt;
&lt;p&gt;diff(vo, t) := a(xo(t), vo);&lt;/p&gt;
&lt;p&gt;xo(t) := 1; vo := 0;&lt;/p&gt;
&lt;p&gt;for i to 1000 do&lt;/p&gt;
&lt;p&gt;xn := xo(t)+vo*dt; vn := vo+a*dt;&lt;/p&gt;
&lt;p&gt;dx1 := vn*dt; dv1 := a*dt;&lt;/p&gt;
&lt;p&gt;dx2 := (vn+(1/2)*dv1)*dt; dv2 := a(x+(1/2)*dx1, (1/2)*dv1)*dt;&lt;/p&gt;
&lt;p&gt;dx3 := (vn+(1/2)*dv2)*dt; dv3 := a(xn+(1/2)*dx2, vn+(1/2)*dv2)*dt;&lt;/p&gt;
&lt;p&gt;dx4 := (vn+dv3)*dt; dv4 := a(xn+dx3, vn+dv3)*dt;&lt;/p&gt;
&lt;p&gt;xn := evalf((xo(t)+dx1+2*dx2+2*dx3+dx4)*(1/6)); vn := evalf((vo+dv1+2*dv2+2*dv3+dv4)*(1/6));&lt;/p&gt;
&lt;p&gt;A(i, 1) := xn; A(i, 2) := vn; A(i, 3) := i*dt;&lt;/p&gt;
&lt;p&gt;xo(t) := xn;&lt;/p&gt;
&lt;p&gt;vo := vn&lt;/p&gt;
&lt;p&gt;end do;&lt;/p&gt;
&lt;p&gt;ExportMatrix("RK4.txt", A)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;One thing I didn't understand is what do you mean with "a" not being concrete.&lt;/p&gt;
&lt;p&gt;Thanks once again&lt;/p&gt;</description>
      <guid>142222</guid>
      <pubDate>Sat, 12 Jan 2013 05:50:27 Z</pubDate>
      <itunes:author>gabrielmp</itunes:author>
      <author>gabrielmp</author>
    </item>
    <item>
      <title>Corrected code and an example</title>
      <link>http://www.mapleprimes.com/questions/142201-Trouble-With-RK4-RungeKutta?ref=Feed:MaplePrimes:Trouble with RK4 (Runge-Kutta)!:Comments#answer142235</link>
      <itunes:summary>&lt;p&gt;restart;&lt;br&gt;a:=(x,v)-&amp;gt;-x-0.1*v; #Example only&lt;br&gt;xo := 1; vo := 0;&lt;br&gt;sys:={diff(x(t), t) = v(t), diff(v(t), t) = a(x(t), v(t)),x(0)=xo,v(0)=vo}; #Your system&lt;br&gt;dsolve(sys); #For comparison later&lt;br&gt;X:=subs(%,x(t));&lt;br&gt;plot(X,t=0..50);&lt;br&gt;#Now the corrected algorithm&lt;br&gt;xo := 1; vo := 0:&lt;br&gt;A := Matrix():&lt;br&gt;dt := 0.1e-2:&lt;br&gt;A(1, 1) := xo; A(1, 2) := vo; A(1, 3) := 0;&lt;br&gt;for i from 2 to 1001 do&lt;br&gt;&amp;nbsp;&amp;nbsp; xn := xo+vo*dt; vn := vo+a(xo,vo)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx1 := vn*dt; dv1 := a(xo,vo)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx2 := (vn+(1/2)*dv1)*dt; dv2 := a(xn+(1/2)*dx1,vn+(1/2)*dv1)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx3 := (vn+(1/2)*dv2)*dt; dv3 := a(xn+(1/2)*dx2, vn+(1/2)*dv2)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx4 := (vn+dv3)*dt; dv4 := a(xn+dx3, vn+dv3)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; xn := evalf(xo+(dx1+2*dx2+2*dx3+dx4)*(1/6)); vn := evalf(vo+(dv1+2*dv2+2*dv3+dv4)*(1/6));&lt;br&gt;&amp;nbsp;&amp;nbsp; A(i, 1) := xn; A(i, 2) := vn; A(i, 3) := ( i-1)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; xo := xn;&lt;br&gt;&amp;nbsp;&amp;nbsp; vo := vn&lt;br&gt;end do:&lt;br&gt;A[1,..];&lt;br&gt;#The submatrix consisting of the third and first column can be obtained in two ways:&lt;br&gt;#LinearAlgebra:-SubMatrix(A,[1..-1],[3,1]);&lt;br&gt;# or&lt;br&gt;#A[1..-1,[3,1]];&lt;br&gt;plot(A[1..-1,[3,1]]);&lt;br&gt;prk:=%:&lt;br&gt;plot(X,t=0..1,color=blue):&lt;br&gt;plots:-display(prk,%);&lt;br&gt;#Comparing values at t = 1:&lt;br&gt;A[-1,..];&lt;br&gt;evalf(eval(X,t=1));&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edited: 1000 changed to 1001 and A(i, 3) :=&amp;nbsp; i*dt changed to A(i, 3) := ( i-1)*dt&lt;/strong&gt;&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;restart;&lt;br&gt;a:=(x,v)-&amp;gt;-x-0.1*v; #Example only&lt;br&gt;xo := 1; vo := 0;&lt;br&gt;sys:={diff(x(t), t) = v(t), diff(v(t), t) = a(x(t), v(t)),x(0)=xo,v(0)=vo}; #Your system&lt;br&gt;dsolve(sys); #For comparison later&lt;br&gt;X:=subs(%,x(t));&lt;br&gt;plot(X,t=0..50);&lt;br&gt;#Now the corrected algorithm&lt;br&gt;xo := 1; vo := 0:&lt;br&gt;A := Matrix():&lt;br&gt;dt := 0.1e-2:&lt;br&gt;A(1, 1) := xo; A(1, 2) := vo; A(1, 3) := 0;&lt;br&gt;for i from 2 to 1001 do&lt;br&gt;&amp;nbsp;&amp;nbsp; xn := xo+vo*dt; vn := vo+a(xo,vo)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx1 := vn*dt; dv1 := a(xo,vo)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx2 := (vn+(1/2)*dv1)*dt; dv2 := a(xn+(1/2)*dx1,vn+(1/2)*dv1)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx3 := (vn+(1/2)*dv2)*dt; dv3 := a(xn+(1/2)*dx2, vn+(1/2)*dv2)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; dx4 := (vn+dv3)*dt; dv4 := a(xn+dx3, vn+dv3)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; xn := evalf(xo+(dx1+2*dx2+2*dx3+dx4)*(1/6)); vn := evalf(vo+(dv1+2*dv2+2*dv3+dv4)*(1/6));&lt;br&gt;&amp;nbsp;&amp;nbsp; A(i, 1) := xn; A(i, 2) := vn; A(i, 3) := ( i-1)*dt;&lt;br&gt;&amp;nbsp;&amp;nbsp; xo := xn;&lt;br&gt;&amp;nbsp;&amp;nbsp; vo := vn&lt;br&gt;end do:&lt;br&gt;A[1,..];&lt;br&gt;#The submatrix consisting of the third and first column can be obtained in two ways:&lt;br&gt;#LinearAlgebra:-SubMatrix(A,[1..-1],[3,1]);&lt;br&gt;# or&lt;br&gt;#A[1..-1,[3,1]];&lt;br&gt;plot(A[1..-1,[3,1]]);&lt;br&gt;prk:=%:&lt;br&gt;plot(X,t=0..1,color=blue):&lt;br&gt;plots:-display(prk,%);&lt;br&gt;#Comparing values at t = 1:&lt;br&gt;A[-1,..];&lt;br&gt;evalf(eval(X,t=1));&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Edited: 1000 changed to 1001 and A(i, 3) :=&amp;nbsp; i*dt changed to A(i, 3) := ( i-1)*dt&lt;/strong&gt;&lt;/p&gt;</description>
      <guid>142235</guid>
      <pubDate>Sat, 12 Jan 2013 18:45:33 Z</pubDate>
      <itunes:author>Preben Alsholm</itunes:author>
      <author>Preben Alsholm</author>
    </item>
    <item>
      <title>Thanks</title>
      <link>http://www.mapleprimes.com/questions/142201-Trouble-With-RK4-RungeKutta?ref=Feed:MaplePrimes:Trouble with RK4 (Runge-Kutta)!:Comments#answer142278</link>
      <itunes:summary>&lt;p&gt;Thank you very much for your help Preben. I probably wouldn't have done it without you. I appreciate it !&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;Thank you very much for your help Preben. I probably wouldn't have done it without you. I appreciate it !&lt;/p&gt;</description>
      <guid>142278</guid>
      <pubDate>Mon, 14 Jan 2013 17:32:31 Z</pubDate>
      <itunes:author>gabrielmp</itunes:author>
      <author>gabrielmp</author>
    </item>
    <item>
      <title>See my other answer</title>
      <link>http://www.mapleprimes.com/questions/142201-Trouble-With-RK4-RungeKutta?ref=Feed:MaplePrimes:Trouble with RK4 (Runge-Kutta)!:Comments#comment142236</link>
      <itunes:summary>&lt;p&gt;You are using 'a' as a function of two variables (x and v), but it is never defined as such. However, you also use it without arguments, so you are not being consistent. In any case for the algorithm to run you have to define 'a'.&lt;/p&gt;</itunes:summary>
      <description>&lt;p&gt;You are using 'a' as a function of two variables (x and v), but it is never defined as such. However, you also use it without arguments, so you are not being consistent. In any case for the algorithm to run you have to define 'a'.&lt;/p&gt;</description>
      <guid>142236</guid>
      <pubDate>Sat, 12 Jan 2013 18:49:24 Z</pubDate>
      <itunes:author>Preben Alsholm</itunes:author>
      <author>Preben Alsholm</author>
    </item>
  </channel>
</rss>