Mercurial > repos > public > sbplib
comparison +time/Ode45.m @ 1113:47e86b5270ad feature/timesteppers
Change name of property k to dt in time.Timestepper
author | Jonatan Werpers <jonatan@werpers.com> |
---|---|
date | Wed, 10 Apr 2019 22:40:55 +0200 |
parents | f5e14e5986b5 |
children |
comparison
equal
deleted
inserted
replaced
1112:835c8fa456ec | 1113:47e86b5270ad |
---|---|
1 classdef Ode45 < time.Timestepper | 1 classdef Ode45 < time.Timestepper |
2 properties | 2 properties |
3 F | 3 F |
4 k | 4 dt |
5 t | 5 t |
6 w | 6 w |
7 m | 7 m |
8 D | 8 D |
9 E | 9 E |
13 n | 13 n |
14 end | 14 end |
15 | 15 |
16 | 16 |
17 methods | 17 methods |
18 function obj = Ode45(D, E, S, k, t0, v0, v0t) | 18 function obj = Ode45(D, E, S, dt, t0, v0, v0t) |
19 obj.D = D; | 19 obj.D = D; |
20 obj.E = E; | 20 obj.E = E; |
21 obj.S = S; | 21 obj.S = S; |
22 obj.m = length(v0); | 22 obj.m = length(v0); |
23 | 23 |
29 obj.C = zeros(2*obj.m,1); | 29 obj.C = zeros(2*obj.m,1); |
30 else | 30 else |
31 obj.C = [zeros(obj.m,1), S]; | 31 obj.C = [zeros(obj.m,1), S]; |
32 end | 32 end |
33 | 33 |
34 obj.k = k; | 34 obj.dt = dt; |
35 obj.t = t0; | 35 obj.t = t0; |
36 obj.w = [v0; v0t]; | 36 obj.w = [v0; v0t]; |
37 | 37 |
38 obj.F = @(w,t)(obj.M*w + obj.C); | 38 obj.F = @(w,t)(obj.M*w + obj.C); |
39 end | 39 end |
47 vt = obj.w(end/2+1:end); | 47 vt = obj.w(end/2+1:end); |
48 t = obj.t; | 48 t = obj.t; |
49 end | 49 end |
50 | 50 |
51 function obj = step(obj) | 51 function obj = step(obj) |
52 [t,w] = ode45(@(t,w)(obj.F(w,t)),[obj.t obj.t+obj.k],obj.w); | 52 [t,w] = ode45(@(t,w)(obj.F(w,t)),[obj.t obj.t+obj.dt],obj.w); |
53 | 53 |
54 obj.t = t(end); | 54 obj.t = t(end); |
55 obj.w = w(end,:)'; | 55 obj.w = w(end,:)'; |
56 obj.n = obj.n + 1; | 56 obj.n = obj.n + 1; |
57 end | 57 end |
58 end | 58 end |
59 | 59 |
60 | 60 |
61 methods (Static) | 61 methods (Static) |
62 function k = getTimeStep(lambda) | 62 function dt = getTimeStep(lambda) |
63 k = rk4.get_rk4_time_step(lambda); | 63 dt = rk4.get_rk4_time_step(lambda); |
64 end | 64 end |
65 end | 65 end |
66 | 66 |
67 end | 67 end |