diff +time/Rk4SecondOrderNonlin.m @ 984:0585a2ee7ee7 feature/timesteppers

Inline the rk.rungekutta_4 function.
author Jonatan Werpers <jonatan@werpers.com>
date Tue, 08 Jan 2019 12:19:33 +0100
parents f5e14e5986b5
children
line wrap: on
line diff
--- a/+time/Rk4SecondOrderNonlin.m	Tue Jan 08 12:07:57 2019 +0100
+++ b/+time/Rk4SecondOrderNonlin.m	Tue Jan 08 12:19:33 2019 +0100
@@ -61,7 +61,15 @@
         end
 
         function obj = step(obj)
-            obj.w = time.rk.rungekutta_4(obj.w, obj.t, obj.k, obj.F);
+            w = obj.w;
+            k = obj.k;
+
+            k1 = obj.F(t, w);
+            k2 = obj.F(t + 0.5*k, w + 0.5*k*k1);
+            k3 = obj.F(t + 0.5*k, w + 0.5*k*k2);
+            k4 = obj.F(t + k, w + k*k3);
+
+            obj.w = w + k*(1/6)*(k1+2*(k2+k3)+k4);
             obj.t = obj.t + obj.k;
             obj.n = obj.n + 1;
         end