I am starting to use the amazing ModellingToolkit, but I am afraid I am missing something important. So I apologize if my questions is silly.
Suppose I have a model consisting of two differential equations, two dependent variables x1 and x2 and an independent variable t. For example:
@parameters t a1 a2; @variables x1(t) x2(t); D = Differential(t); D2 = Differential(t)^2; f(t) = 0.1*sin(2*pi*t); T1 = a1*f(t) T2 = a2*f(t) eq = [ D2(x1) ~ T1 - D(x2), D2(x2) ~ T2 - D(x1) ]; sys = ODESystem(eq); sys = ode_order_lowering(sys); tspan = (0.0,10.0); p =[a1 => 1.0, a2 => 2.0 ]; u0 =[ D(x1) => 0.0, x1 => 0.0, D(x2) => 0.0, x2 => 0.0, ]; prob = ODEProblem(sys,u0,tspan,p,jac=true) sol = solve(prob);
I can plot the solution x1(t) even without knowing the position of this variable in
pos(t), since there is a Plot recipe
My question is. Suppose I want to make some mathematical operations on
x1(t). For example, evaluate the integral of
(x1(t)/(a+b))^2 over the time span.
How can I “recover” x1(t) from sol and use it along with the symbolic operations? For example,
expr = substitute( (x1/(a+b))^2, p)
will substitute the values of a and b, as expected. But if I try to use it with QuadGK, for example, it will give me an error, since x1(t) is not linked to sol(t).
I guess I am missing something important about it and I really want to understand how to properly use the solution provided by DifferentialEquations here.