class daepy.continuation.BVPContinuation(bvp, method='pseudo_arclength')

Used to perform continuation runs. It is initialised with a BVP bvp and method is one of

  • ‘pseudo_arclength’ the pseudo-arclength method 1 (the default)

  • ‘naive’ naive continuation with no predictive step

Once initialised, a continuation run may be performed using the continuation_run() method.


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.

  1. Allgower and K. Georg. Introduction to Numerical Continuation Methods. Classics in Applied Mathematics. Society for Industrial and Applied Mathematics, January 2003.


Evaluate the augmented system.


Evaluate the augmented jacobian.


Find the tangent of the solution path.

continuation_step(y0, d, stepsize=1.0, adaptive=True, target=None, tol=1e-08, maxiter=100)

Perform a sing continuation step.

continuation_run(x0, p0, steps=1, stepsize=1.0, target=None, tol=1e-08, maxiter=100, disp=False, callback=None)

Perform a continuation run where x0 is the initial guess (typically one would use bvp.state()), p0 is the initial value of the parameter, 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 function returns the final solution and final parameter value. The bvp object is updated during the continuation run so bvp.state() will correspond to the final solution and the parameter value in bvp will correspond to the final parameter value as well.


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.