198
198
σ = (1 - α)* 1 // 2 + α* mσ[deg_index]
199
199
τ = 1 // 2 * ((1 - α)^ 2 ) + 2 * α* (1 - α)* mσ[deg_index] + (α^ 2 )* (mσ[deg_index]* (mσ[deg_index]+ mτ[deg_index]))
200
200
201
- sqrt_dt = sqrt (dt )
201
+ sqrt_dt = sqrt (abs (dt) )
202
202
203
203
μ = recf[start] # here κ = 0
204
204
tᵢ = t + α* dt* μ
258
258
259
259
uₓ = integrator. f (uₓ,p,tₓ)
260
260
u += (1 // 2 * dt)* uₓ
261
- uₓ = 1 // 2 .* Gₛ .* (W. dW .^ 2 .- dt )
261
+ uₓ = 1 // 2 .* Gₛ .* (W. dW .^ 2 .- abs (dt) )
262
262
uᵢ₋₂ = uᵢ + uₓ
263
263
Gₛ₁ = integrator. g (uᵢ₋₂,p,tᵢ)
264
264
u += (1 // 2 )* Gₛ₁
284
284
u += (1 // 2 )* dt* uₓ
285
285
for i in 1 : length (W. dW)
286
286
WikJ = W. dW[i]; WikJ2 = vec_χ[i]
287
- WikRange = 1 // 2 .* (W. dW .* WikJ .- (1 : length (W. dW) .== i) .* dt ) # .- (1:length(W.dW) .> i) .* dt .* vec_χ .+ (1:length(W.dW) .< i) .* dt .* WikJ2)
287
+ WikRange = 1 // 2 .* (W. dW .* WikJ .- (1 : length (W. dW) .== i) .* abs (dt) ) # .- (1:length(W.dW) .> i) .* dt .* vec_χ .+ (1:length(W.dW) .< i) .* dt .* WikJ2)
288
288
uₓ = Gₛ* WikRange
289
289
WikRange = 1 // 2 .* (1 : length (W. dW) .== i)
290
290
uᵢ₋₂ = uᵢ + uₓ
330
330
σ = (1 - α)* 1 // 2 + α* mσ[deg_index]
331
331
τ = 1 // 2 * ((1 - α)^ 2 ) + 2 * α* (1 - α)* mσ[deg_index] + (α^ 2 )* (mσ[deg_index]* (mσ[deg_index]+ mτ[deg_index]))
332
332
333
- sqrt_dt = sqrt (dt )
333
+ sqrt_dt = sqrt (abs (dt) )
334
334
if gen_prob
335
335
vec_χ .= 1 // 2 .+ oftype (W. dW, rand (W. rng, length (W. dW)))
336
336
@. . vec_χ = 2 * floor (vec_χ) - 1
396
396
integrator. f (k,uₓ,p,tₓ)
397
397
@. . u += (1 // 2 )* dt* k
398
398
399
- @. . uₓ = Gₛ* ((W. dW^ 2 - dt )/ 2 )
399
+ @. . uₓ = Gₛ* ((W. dW^ 2 - abs (dt) )/ 2 )
400
400
@. . uᵢ₋₂ = uᵢ + uₓ
401
401
integrator. g (Gₛ₁,uᵢ₋₂,p,tᵢ)
402
402
@. . u += (1 // 2 )* Gₛ₁
425
425
426
426
for i in 1 : length (W. dW)
427
427
WikJ = W. dW[i]; WikJ2 = vec_χ[i]
428
- WikRange .= 1 // 2 .* (W. dW .* WikJ .- (1 : length (W. dW) .== i) .* dt )# .+ (1:length(W.dW) .< i) .* dt .* WikJ2 .- (1:length(W.dW) .> i) .* dt .* vec_χ)
428
+ WikRange .= 1 // 2 .* (W. dW .* WikJ .- (1 : length (W. dW) .== i) .* abs (dt) )# .+ (1:length(W.dW) .< i) .* dt .* WikJ2 .- (1:length(W.dW) .> i) .* dt .* vec_χ)
429
429
mul! (uₓ,Gₛ,WikRange)
430
430
@. . uᵢ₋₂ = uᵢ + uₓ
431
431
WikRange .= 1 // 2 .* (1 : length (W. dW) .== i)
517
517
518
518
if integrator. alg. strong_order_1
519
519
if (typeof (W. dW) <: Number ) || (length (W. dW) == 1 ) || (is_diagonal_noise (integrator. sol. prob))
520
- uᵢ₋₂ = @. 1 // 2 * Gₛ * (W. dW ^ 2 - dt )
520
+ uᵢ₋₂ = @. 1 // 2 * Gₛ * (W. dW ^ 2 - abs (dt) )
521
521
tmp = @. u + uᵢ₋₂
522
522
Gₛ = integrator. g (tmp,p,tᵢ)
523
523
uᵢ₋₁ = @. 1 // 2 * Gₛ
528
528
else
529
529
for i in 1 : length (W. dW)
530
530
WikJ = W. dW[i]
531
- WikRange = 1 // 2 .* (W. dW .* WikJ - (1 : length (W. dW) .== i) .* dt )
531
+ WikRange = 1 // 2 .* (W. dW .* WikJ - (1 : length (W. dW) .== i) .* abs (dt) )
532
532
uᵢ₋₂ = Gₛ* WikRange
533
533
WikRange = 1 // 2 .* (1 : length (W. dW) .== i)
534
534
tmp = u + uᵢ₋₂
608
608
609
609
if integrator. alg. strong_order_1
610
610
if (typeof (W. dW) <: Number ) || (length (W. dW) == 1 ) || (is_diagonal_noise (integrator. sol. prob))
611
- @. . uᵢ₋₂ = 1 // 2 * Gₛ* (W. dW^ 2 - dt )
611
+ @. . uᵢ₋₂ = 1 // 2 * Gₛ* (W. dW^ 2 - abs (dt) )
612
612
@. . tmp = u + uᵢ₋₂
613
613
integrator. g (Gₛ,tmp,p,tᵢ)
614
614
@. . uᵢ₋₁ = 1 // 2 * Gₛ
619
619
else
620
620
for i in 1 : length (W. dW)
621
621
WikJ = W. dW[i]
622
- WikRange .= 1 // 2 .* (WikJ .* W. dW .- (1 : length (W. dW) .== i) .* dt )
622
+ WikRange .= 1 // 2 .* (WikJ .* W. dW .- (1 : length (W. dW) .== i) .* abs (dt) )
623
623
mul! (uᵢ₋₂,Gₛ,WikRange)
624
624
WikRange .= 1 // 2 .* (1 : length (W. dW) .== i)
625
625
@. . tmp = u + uᵢ₋₂
834
834
835
835
η₁ = (rand () < 1 // 2 ) ? - 1 : 1
836
836
η₂ = (rand () < 1 // 2 ) ? - 1 : 1
837
- sqrt_dt = sqrt (dt )
837
+ sqrt_dt = sqrt (abs (dt) )
838
838
839
839
Û₁ = zero (u)
840
840
Û₂ = zero (u)
@@ -901,15 +901,15 @@ end
901
901
uₓ += Gₛ* W. dW
902
902
903
903
uₓ = integrator. f (uₓ,p,tₓ)
904
- u += (1 // 2 * dt)* uₓ + Gₛ* ((W. dW^ 2 - dt )/ (η₁* sqrt_dt) - W. dW)
904
+ u += (1 // 2 * dt)* uₓ + Gₛ* ((W. dW^ 2 - abs (dt) )/ (η₁* sqrt_dt) - W. dW)
905
905
Û₁ -= (η₁* sqrt_dt/ 2 )* Gₛ
906
906
Û₂ += (η₁* sqrt_dt/ 2 )* Gₛ
907
907
908
908
Gₛ = integrator. g (Û₂,p,t̂₂)
909
909
u += Gₛ* W. dW
910
910
911
911
Gₛ = integrator. g (Û₁,p,t̂₁)
912
- u += Gₛ* (W. dW - (W. dW^ 2 - dt )/ (η₁* sqrt_dt))
912
+ u += Gₛ* (W. dW - (W. dW^ 2 - abs (dt) )/ (η₁* sqrt_dt))
913
913
elseif is_diagonal_noise (integrator. sol. prob)
914
914
915
915
Gₛ = integrator. g (Û₁,p,t̂₁)
@@ -922,13 +922,13 @@ end
922
922
uₓ = integrator. f (uₓ,p,tₓ)
923
923
u += (1 // 2 )* dt* uₓ
924
924
925
- u .+ = Gₛ .* ((W. dW .^ 2 .- dt ) ./ (η₁* sqrt_dt) .- W. dW)
925
+ u .+ = Gₛ .* ((W. dW .^ 2 .- abs (dt) ) ./ (η₁* sqrt_dt) .- W. dW)
926
926
927
927
Gₛ = integrator. g (Û₂,p,t̂₂)
928
928
u .+ = Gₛ .* W. dW
929
929
930
930
Gₛ = integrator. g (Û₁,p,t̂₁)
931
- u .- = Gₛ .* ((W. dW .^ 2 .- dt ) ./ (η₁* sqrt_dt) .- W. dW)
931
+ u .- = Gₛ .* ((W. dW .^ 2 .- abs (dt) ) ./ (η₁* sqrt_dt) .- W. dW)
932
932
else
933
933
Gₛ = integrator. g (Û₁,p,t̂₁)
934
934
945
945
for i in 1 : length (W. dW)
946
946
uᵢ₋₁ = Û₁ - (1 // 2 * η₁* sqrt_dt)* @view (Gₛ[:,i])
947
947
Gₛ₁ = integrator. g (uᵢ₋₁,p,t̂₁)
948
- u += @view (Gₛ₁[:,i])* W. dW[i] + (@view (Gₛ[:,i]) - @view (Gₛ₁[:,i]))* ((W. dW[i]^ 2 - dt )/ (η₁* sqrt_dt))
948
+ u += @view (Gₛ₁[:,i])* W. dW[i] + (@view (Gₛ[:,i]) - @view (Gₛ₁[:,i]))* ((W. dW[i]^ 2 - abs (dt) )/ (η₁* sqrt_dt))
949
949
end
950
950
951
951
for i in 1 : length (W. dW)
988
988
989
989
η₁ = (rand () < 1 // 2 ) ? - 1 : 1
990
990
η₂ = (rand () < 1 // 2 ) ? - 1 : 1
991
- sqrt_dt = sqrt (dt )
991
+ sqrt_dt = sqrt (abs (dt) )
992
992
993
993
@. . Û₁ = zero (eltype (u))
994
994
@. . Û₂ = zero (eltype (u))
@@ -1056,15 +1056,15 @@ end
1056
1056
@. . uₓ += Gₛ* W. dW
1057
1057
1058
1058
integrator. f (k,uₓ,p,tₓ)
1059
- @. . u += (1 // 2 * dt)* k + Gₛ* ((W. dW^ 2 - dt )/ (η₁* sqrt_dt) - W. dW)
1059
+ @. . u += (1 // 2 * dt)* k + Gₛ* ((W. dW^ 2 - abs (dt) )/ (η₁* sqrt_dt) - W. dW)
1060
1060
@. . Û₁ -= (η₁* sqrt_dt/ 2 )* Gₛ
1061
1061
@. . Û₂ += (η₁* sqrt_dt/ 2 )* Gₛ
1062
1062
1063
1063
integrator. g (Gₛ,Û₂,p,t̂₂)
1064
1064
@. . u += Gₛ* W. dW
1065
1065
1066
1066
integrator. g (Gₛ,Û₁,p,t̂₁)
1067
- @. . u += Gₛ* (W. dW - (W. dW^ 2 - dt )/ (η₁* sqrt_dt))
1067
+ @. . u += Gₛ* (W. dW - (W. dW^ 2 - abs (dt) )/ (η₁* sqrt_dt))
1068
1068
else
1069
1069
integrator. g (Gₛ,Û₁,p,t̂₁)
1070
1070
@@ -1081,7 +1081,7 @@ end
1081
1081
for i in 1 : length (W. dW)
1082
1082
@. . uᵢ₋₁ = Û₁ - (1 // 2 * η₁* sqrt_dt)* @view (Gₛ[:,i])
1083
1083
integrator. g (Gₛ₁,uᵢ₋₁,p,t̂₁)
1084
- @. . u += @view (Gₛ₁[:,i])* W. dW[i] + (@view (Gₛ[:,i]) - @view (Gₛ₁[:,i]))* ((W. dW[i]^ 2 - dt )/ (η₁* sqrt_dt))
1084
+ @. . u += @view (Gₛ₁[:,i])* W. dW[i] + (@view (Gₛ[:,i]) - @view (Gₛ₁[:,i]))* ((W. dW[i]^ 2 - abs (dt) )/ (η₁* sqrt_dt))
1085
1085
end
1086
1086
1087
1087
for i in 1 : length (W. dW)
@@ -1120,7 +1120,7 @@ end
1120
1120
σ = mσ[deg_index]
1121
1121
τ = mτ[deg_index]
1122
1122
1123
- sqrt_dt = sqrt (dt )
1123
+ sqrt_dt = sqrt (abs (dt) )
1124
1124
(gen_prob) && (vec_χ = 2 .* floor .( 1 // 2 .+ false .* W. dW .+ rand (length (W. dW))) .- 1 )
1125
1125
1126
1126
tᵢ₋₂ = t
@@ -1309,7 +1309,7 @@ end
1309
1309
σ = mσ[deg_index]
1310
1310
τ = mτ[deg_index]
1311
1311
1312
- sqrt_dt = sqrt (dt )
1312
+ sqrt_dt = sqrt (abs (dt) )
1313
1313
(gen_prob) && (vec_χ .= 2 .* floor .(1 // 2 .+ false .* vec_χ .+ rand (length (vec_χ))) .- 1 )
1314
1314
1315
1315
tᵢ₋₂ = t
0 commit comments