@@ -101,6 +101,9 @@ using Test, LinearAlgebra
101
101
# @test isapprox( new_sol[x[1],end], sol[x[1],end], rtol=1e-4)
102
102
103
103
# Change of variables for sde
104
+ noise_eqs = ModelingToolkit. get_noise_eqs
105
+ value = ModelingToolkit. value
106
+
104
107
@independent_variables t
105
108
@brownian B
106
109
@parameters μ σ
@@ -114,7 +117,7 @@ forward_subs = [log(x) => y]
114
117
backward_subs = [x => exp (y)]
115
118
new_sys = change_of_variable_SDE (sys, t, forward_subs, backward_subs)
116
119
@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 (σ)
118
121
119
122
# Multiple Brownian and equations
120
123
@independent_variables t
@@ -127,4 +130,13 @@ def = [x=>0., y=> 0., u=>0., μ => 2., σ=>1., α=>3.]
127
130
@mtkcompile sys = System (eqs, t; defaults= def)
128
131
forward_subs = [log (x) => z, y^ 2 => w, log (u) => v]
129
132
backward_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