Functions to work with the ODE structure
StructuralIdentifiability.power_series_solution — Methodpower_series_solution(ode, param_values, initial_conditions, input_values, prec)Input:
ode- an ode to solveparam_values- parameter values, must be a dictionary mapping parameter to a valueinitial_conditions- initial conditions ofode, must be a dictionary mapping state variable to a valueinput_values- power series for the inputs presented as a dictionary variable => list of coefficientsprec- the precision of solutions
Output:
- computes a power series solution with precision prec presented as a dictionary variable => corresponding coordinate of the solution
StructuralIdentifiability.reduce_ode_mod_p — Methodreduce_ode_mod_p(ode, p)Input: ode is an ODE over QQ, p is a prime number Output: the reduction mod p, throws an exception if p divides one of the denominators
StructuralIdentifiability.rename_variables — Methodrename_variables(ode, transform)Input: ode and a map from the old names to the new names Output: variables and parameters are renamed according to the correspondce given in the transform; if a variable is not given any new name, it keeps the name it had.
StructuralIdentifiability.set_parameter_values — Methodset_parameter_values(ode, param_values)Input:
ode- an ODE as aboveparam_values- values for (possibly, some of) the parameters as dictionaryparameter=>value
Output:
- new ode with the parameters in param_values plugged with the given numbers
StructuralIdentifiability.find_submodels — Methodfind_submodels(ode)The function calculates and returns all valid submodels given a system of ODEs.
Input:
ode- an ODEs system to be studied
Output:
- A list of submodels represented as
odeobjects
Example:
>ode = @ODEmodel(x1'(t) = x1(t)^2,
x2'(t) = x1(t) * x2(t),
y1(t) = x1(t),
y2(t) = x2(t))
>find_submodels(ode)
ODE{QQMPolyRingElem}[
x1'(t) = a(t)*x2(t)^2 + x1(t)
y1(t) = x1(t)
]