This class is used to construct and solve the nonlinear system. It is initialised with a class dae which follows the DAETemplate, the degree of the differential variables and the number of intervals in the mesh.
‘partial_inverse’ Newton-like method which calculates a partial inverse of the Jacobian by calculating a QR decomposition and doing a partial backwards substitution when the step doesn’t converge
‘steepest_descent’ steepest descent method
tol is required residual tolerance, maxiter is the maximum number of iterations and disp controls whether convergence messages are printed.
Perform a continuation run starting from parameter value param where method is one of
‘pseudo_arclength’ the pseudo-arclength method [3] (the default)
‘naive’ naive continuation with no predictive step
steps is either a maximum number of steps or a numpy array of parameter values which determine the steps explicitly, stepsize is the initial stepsize (the pseudo-arclength method will adapt the stepsize, ignored if steps are given explicitly), target is a value for the parameter at which the continuation will stop (optional), tol is the required solution tolerance, maxiter is the maximum number of iterations for the nonlinear solver, disp determines whether to print progress messages and callback(parameter, solution) is a function that will be called before each continuation step, for example to draw a new line on a plot at each step (optional).
The bvp must have been initialised with a dae object that defines the update_parameter() method and all the jacobian methods. In the future, continuation using a finite difference approximation of the jacobian may be supported although it would still be strongly recommended to use an analytic jacobian, if available.
Note
When using the ‘pseudo_arclength’ method, setting a target or expilicity giving steps does not guarantee that the parameter value of the solution will correspond to the given value. If you wish to use parameter continuation to reach a specific parameter value, specify target or give explicit steps to get close to the desired parameter value and then use solve() with the exact parameter value.
Determine the initial polynomial coefficients from guesses for the variables given as a list of functions and, optionally, an initial coordinate transform and initial solution interval. If transform is given then initial_interval is ignored and the initial functions are assumed to be parametrised by the internal coordinate. If transform is None then the functions are assumed to be parametrised by the transformed coordinate.
Solution to a BVP. This class collects the collocation solution, coordinate transform and coordinate scaling together. The collocation solution (parametrised by the internal coordinate) can be accessed using the solution attribute and the components of the coordinate transform can be accessed using the forward and backward shortcut attributes. Indexing a BVPSolution object returns a new BVPSolution object with 1-dimensional collocation solution corresponding to the given index and the same coordinate transform.
The solution can be evaluated at internal coordinates by using the evaluate_internal() method or by calling the object like a function. The solution can be evaluated at transformed coordinates by using the eval() method.
Calculate the derivative of the nonlinear system with respect to non-delayed arguments where jac(x,y) is a function that returns the jacobian of the system with respect to non-delayed arguments at a point x. If the system is non-autonomous then a function nonautonomous_jac(x,y) which returns the jacobian of the non-autonmous part with respect to the coordinate transform may be provided and this method will return the corresponding derivative of the nonlinear system. If either jac or nonautonomous_jac is not provided then the corresponding derivative is zero. The results are returned as scipy.sparse.csr_matrix unless sparse is False, in which case the result is returned as a full numpy array.
Calculate the derivative of the nonlinear system with respect to non-delayed derivatives where jac(x,y) is a function that returns the jacobian of the system with respect to non-delayed derivatives at a point x. Also calculates the corresponding derivative with respect to the coordinate transform. The results are returned as scipy.sparse.csr_matrix unless sparse is False, in which case the result is returned as a full numpy array.
Calculate the derivative of the nonlinear system with respect to delayed arguments where jac(x,y) is a function that returns the jacobian of the system with respect to delayed arguments at a point x. The delay must be one of the variables of the system with index delay_index. Also calculates the corresponding derivative with respect to the coordinate transform. The results are returned as scipy.sparse.csr_matrix unless sparse is False, in which case the result is returned as a full numpy array. If your system has multiple delays, this function must be used for each delay separately.