Functions to work with the ODE structure
StructuralIdentifiability._reduce_mod_p
— Method_reduce_mod_p(f, p)
Reduces a polynomial/rational function over Q modulo p
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
ode
objects
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)
]