@@ -101,6 +101,9 @@ using Test, LinearAlgebra
101101# @test isapprox( new_sol[x[1],end], sol[x[1],end], rtol=1e-4)
102102
103103# Change of variables for sde
104+ noise_eqs = ModelingToolkit. get_noise_eqs
105+ value = ModelingToolkit. value
106+
104107@independent_variables t
105108@brownian B
106109@parameters μ σ
@@ -114,7 +117,7 @@ forward_subs = [log(x) => y]
114117backward_subs = [x => exp (y)]
115118new_sys = change_of_variable_SDE (sys, t, forward_subs, backward_subs)
116119@test equations (new_sys)[1 ] == (D (y) ~ μ - 1 / 2 * σ^ 2 )
117- @test ModelingToolkit . get_noise_eqs (new_sys)[1 ] === ModelingToolkit . value (σ)
120+ @test noise_eqs (new_sys)[1 ] === value (σ)
118121
119122# Multiple Brownian and equations
120123@independent_variables t
@@ -127,4 +130,13 @@ def = [x=>0., y=> 0., u=>0., μ => 2., σ=>1., α=>3.]
127130@mtkcompile sys = System (eqs, t; defaults= def)
128131forward_subs = [log (x) => z, y^ 2 => w, log (u) => v]
129132backward_subs = [x => exp (z), y => w^ .5 , u => exp (v)]
130- new_sys = change_of_variable_SDE (sys, t, forward_subs, backward_subs)
133+ new_sys = change_of_variable_SDE (sys, t, forward_subs, backward_subs)
134+ @test equations (new_sys)[1 ] == (D (z) ~ μ - 1 / 2 * σ^ 2 )
135+ @test equations (new_sys)[2 ] == (D (w) ~ α^ 2 )
136+ @test equations (new_sys)[3 ] == (D (v) ~ μ - 1 / 2 * (α^ 2 + σ^ 2 ))
137+ @test noise_eqs (new_sys)[1 ,1 ] === value (σ)
138+ @test noise_eqs (new_sys)[1 ,2 ] === value (0 )
139+ @test noise_eqs (new_sys)[2 ,1 ] === value (0 )
140+ @test noise_eqs (new_sys)[2 ,2 ] === value (substitute (2 * α* y, backward_subs[2 ]))
141+ @test noise_eqs (new_sys)[3 ,1 ] === value (σ)
142+ @test noise_eqs (new_sys)[3 ,2 ] === value (α)
0 commit comments