Skip to content

Commit 74da127

Browse files
Merge pull request #151 from Jonas-a-Zimmermann/OU_Patch
Ou patch
2 parents 6f441f0 + d16a044 commit 74da127

File tree

3 files changed

+32
-4
lines changed

3 files changed

+32
-4
lines changed

src/ornstein_uhlenbeck.jl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ function (X::OrnsteinUhlenbeck)(dW, W, dt, u, p, t, rng) #dist
1010
else
1111
rand_val = wiener_randn(rng, typeof(dW))
1212
end
13-
drift = X.μ .+ (W[end] .- X.μ) .* exp.(-X.Θ * dt)
13+
drift = X.μ .+ (W.curW .- X.μ) .* exp.(-X.Θ * dt)
1414
diffusion = X.σ .* sqrt.((1 .- exp.(-2X.Θ * dt)) ./ (2X.Θ))
15-
drift .+ rand_val .* diffusion .- W[end]
15+
drift .+ rand_val .* diffusion .- W.curW
1616
end
1717

1818
#=
@@ -59,8 +59,8 @@ end
5959

6060
function (X::OrnsteinUhlenbeck!)(rand_vec, W, dt, u, p, t, rng) #dist!
6161
wiener_randn!(rng, rand_vec)
62-
@.. rand_vec = X.μ + (W[end] - X.μ) * exp(-X.Θ * dt) +
63-
rand_vec * X.σ * sqrt((1 - exp.(-2 * X.Θ .* dt)) / (2 * X.Θ)) - W[end]
62+
@.. rand_vec = X.μ + (W.curW - X.μ) * exp(-X.Θ * dt) +
63+
rand_vec * X.σ * sqrt((1 - exp.(-2 * X.Θ .* dt)) / (2 * X.Θ)) - W.curW
6464
end
6565

6666
@doc doc"""

test/runtests.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,5 @@ using Test
2828
include("reinit_test.jl")
2929
include("BWT_test.jl")
3030
include("pcn_test.jl")
31+
include("savestep_test.jl")
3132
end

test/savestep_test.jl

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
@testset "save_everystep Keyword" begin
2+
#Test whether the result of the process is dependent on 'save_everystep'.
3+
using DiffEqNoiseProcess, DiffEqBase, Test, Statistics, Random
4+
processes = [ OrnsteinUhlenbeckProcess(1., 1., 0.3, 0., 0., nothing ),
5+
WienerProcess(0.,0.,nothing ),
6+
CorrelatedWienerProcess([1. 0.; 0. 1.],0.,[0.; 0.],nothing ),
7+
GeometricBrownianMotionProcess(1., 1., 0., 0., nothing )
8+
]
9+
10+
11+
12+
@testset "Noise_process = $(proc.dist)" for proc in processes
13+
14+
cproc = deepcopy(proc)
15+
cproc.save_everystep = true
16+
prob = NoiseProblem(cproc, (0.0, 1.0); seed=1234)
17+
sol_save = solve(prob; dt = 0.1)
18+
19+
20+
cproc = deepcopy(proc)
21+
cproc.save_everystep = false
22+
prob = NoiseProblem(cproc, (0.0, 1.0); seed=1234)
23+
sol_nosave = solve(prob; dt = 0.1)
24+
25+
@test sol_save.curW == sol_nosave.curW
26+
end
27+
end

0 commit comments

Comments
 (0)