Mercurial > repos > public > sbplib
annotate +time/Rungekutta4.m @ 983:b89379fb0814 feature/timesteppers
Convert Rungekutta4 to take F(t,y) instead of a matrix
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Tue, 08 Jan 2019 12:07:57 +0100 |
parents | f5e14e5986b5 |
children | 0585a2ee7ee7 |
rev | line source |
---|---|
0 | 1 classdef Rungekutta4 < time.Timestepper |
2 properties | |
3 F | |
983
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
4 dt |
0 | 5 t |
6 v | |
7 n | |
8 end | |
9 | |
10 | |
11 methods | |
983
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
12 % Create a time stepper for |
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
13 % v_t = F(t,v), v(t0) = v0 |
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
14 % with step size dt. |
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
15 function obj = Rungekutta4(F, dt, t0, v0) |
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
16 obj.F = F; |
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
17 obj.dt = dt; |
0 | 18 obj.t = t0; |
19 obj.v = v0; | |
13
b18d3d201a71
Fixed initialization of step counter in timesteppers.
Jonatan Werpers <jonatan@werpers.com>
parents:
0
diff
changeset
|
20 obj.n = 0; |
0 | 21 end |
22 | |
23 function [v,t] = getV(obj) | |
24 v = obj.v; | |
25 t = obj.t; | |
26 end | |
27 | |
28 function obj = step(obj) | |
983
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
29 obj.v = time.rk.rungekutta_4(obj.v, obj.t, obj.dt, obj.F); |
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
30 obj.t = obj.t + obj.dt; |
0 | 31 obj.n = obj.n + 1; |
32 end | |
33 end | |
34 | |
35 methods (Static) | |
983
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
36 function dt = getTimeStep(lambda) |
b89379fb0814
Convert Rungekutta4 to take F(t,y) instead of a matrix
Jonatan Werpers <jonatan@werpers.com>
parents:
889
diff
changeset
|
37 dt = rk4.get_rk4_time_step(lambda); |
0 | 38 end |
39 end | |
40 end |