Mercurial > repos > public > sbplib
comparison +time/MagnusMP.m @ 513:bc39bb984d88 feature/quantumTriangles
Added arnoldi krylov subspace approximation
author | Ylva Rydin <ylva.rydin@telia.com> |
---|---|
date | Mon, 26 Jun 2017 20:15:54 +0200 |
parents | 49bc2929dfb1 |
children |
comparison
equal
deleted
inserted
replaced
512:4ef2d2a493f1 | 513:bc39bb984d88 |
---|---|
6 k | 6 k |
7 t | 7 t |
8 v | 8 v |
9 m | 9 m |
10 n | 10 n |
11 matrixexp | |
12 tol | |
11 end | 13 end |
12 | 14 |
13 | 15 |
14 methods | 16 methods |
15 function obj = MagnusMP(D, k, t0, v0) | 17 function obj = MagnusMP(D, k ,t0,v0, matrixexp,tol) |
18 default_arg('matrixexp','expm') | |
19 default_arg('tol',1e-6) | |
16 obj.D = D; | 20 obj.D = D; |
17 obj.k = k; | 21 obj.k = k; |
18 obj.t = t0; | 22 obj.t = t0; |
19 obj.v = v0; | 23 obj.v = v0; |
20 obj.m = length(v0); | 24 obj.m = length(v0); |
21 obj.n = 0; | 25 obj.n = 0; |
26 obj.matrixexp = matrixexp; | |
27 obj.tol = tol; | |
22 end | 28 end |
23 | 29 |
24 function [v,t] = getV(obj) | 30 function [v,t] = getV(obj) |
25 v = obj.v; | 31 v = obj.v; |
26 t = obj.t; | 32 t = obj.t; |
27 end | 33 end |
28 | 34 |
29 function obj = step(obj) | 35 function obj = step(obj) |
30 obj.v = time.expint.Magnus_mp(obj.v,obj.D, obj.t, obj.k); | 36 obj.v = time.expint.Magnus_mp(obj.v,obj.D, obj.t, obj.k,obj.matrixexp,obj.tol); |
31 obj.t = obj.t + obj.k; | 37 obj.t = obj.t + obj.k; |
32 obj.n = obj.n + 1; | 38 obj.n = obj.n + 1; |
33 end | 39 end |
34 end | 40 end |
35 | 41 |