naginterfaces.library.ode.bvp_coll_nlin_solve¶
- naginterfaces.library.ode.bvp_coll_nlin_solve(ffun, fjac, gafun, gbfun, gajac, gbjac, guess, comm, data=None, spiked_sorder='C')[source]¶
bvp_coll_nlin_solve
solves a general two-point boundary value problem for a nonlinear mixed order system of ordinary differential equations.For full information please refer to the NAG Library document for d02tl
https://support.nag.com/numeric/nl/nagdoc_30.2/flhtml/d02/d02tlf.html
- Parameters
- ffuncallable f = ffun(x, y, m, data=None)
must evaluate the functions for given values .
- Parameters
- xfloat
, the independent variable.
- yfloat, ndarray, shape
contains , for , for .
Note: .
- mint, ndarray, shape
contains , the order of the th differential equation, for .
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- ffloat, array-like, shape
must contain , for .
- fjaccallable dfdy = fjac(x, y, m, dfdy, data=None)
must evaluate the partial derivatives of with respect to the elements of
.
- Parameters
- xfloat
, the independent variable.
- yfloat, ndarray, shape
contains , for , for .
Note: .
- mint, ndarray, shape
contains , the order of the th differential equation, for .
- dfdyfloat, ndarray, shape
Set to zero.
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- dfdyfloat, array-like, shape
must contain the partial derivative of with respect to , for , for , for . Only nonzero partial derivatives need be set.
- gafuncallable ga = gafun(ya, m, nlbc, data=None)
must evaluate the boundary conditions at the left-hand end of the range, that is functions for given values of .
- Parameters
- yafloat, ndarray, shape
contains , for , for .
Note: .
- mint, ndarray, shape
contains , the order of the th differential equation, for .
- nlbcint
The number of boundary conditions at .
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- gafloat, array-like, shape
must contain , for .
- gbfuncallable gb = gbfun(yb, m, nrbc, data=None)
must evaluate the boundary conditions at the right-hand end of the range, that is functions for given values of .
- Parameters
- ybfloat, ndarray, shape
contains , for , for .
Note: .
- mint, ndarray, shape
contains , the order of the th differential equation, for .
- nrbcint
The number of boundary conditions at .
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- gbfloat, array-like, shape
must contain , for .
- gajaccallable dgady = gajac(ya, m, dgady, data=None)
must evaluate the partial derivatives of with respect to the elements of .
- Parameters
- yafloat, ndarray, shape
contains , for , for .
Note: .
- mint, ndarray, shape
contains , the order of the th differential equation, for .
- dgadyfloat, ndarray, shape
Set to zero.
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- dgadyfloat, array-like, shape
must contain the partial derivative of with respect to , for , for , for . Only nonzero partial derivatives need be set.
- gbjaccallable dgbdy = gbjac(yb, m, dgbdy, data=None)
must evaluate the partial derivatives of with respect to the elements of .
- Parameters
- ybfloat, ndarray, shape
contains , for , for .
Note: .
- mint, ndarray, shape
contains , the order of the th differential equation, for .
- dgbdyfloat, ndarray, shape
Set to zero.
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- dgbdyfloat, array-like, shape
must contain the partial derivative of with respect to , for , for , for . Only nonzero partial derivatives need be set.
- guesscallable (y, dym) = guess(x, m, mmax, data=None)
must return initial approximations for the solution components and the derivatives , for , for .
Try to compute each derivative such that it corresponds to your approximations to , for .
You should not call to compute .
If
bvp_coll_nlin_solve
is being used in conjunction withbvp_coll_nlin_contin()
as part of a continuation process, is not called bybvp_coll_nlin_solve
after the call tobvp_coll_nlin_contin()
.- Parameters
- xfloat
, the independent variable; .
- mint, ndarray, shape
contains , the order of the th differential equation, for .
- mmaxint
.
- dataarbitrary, optional, modifiable in place
User-communication data for callback functions.
- Returns
- yfloat, array-like, shape
must contain , for , for .
Note: .
- dymfloat, array-like, shape
must contain , for .
- commdict, communication object, modified in place
Communication structure.
This argument must have been initialized by a prior call to
bvp_coll_nlin_setup()
.- dataarbitrary, optional
User-communication data for callback functions.
- spiked_sorderstr, optional
If in , in or in are spiked (i.e., have unit extent in all but one dimension, or have size ), selects the storage order to associate with them in the NAG Engine:
- spiked_sorder =
row-major storage will be used;
- spiked_sorder =
column-major storage will be used.
- Raises
- NagValueError
- (errno )
Either the setup function has not been called or the communication arrays have become corrupted. No solution will be computed.
- (errno )
Numerical singularity has been detected in the Jacobian used in the Newton iteration.
No results have been generated. Check the coding of the functions for calculating the Jacobians of system and boundary conditions.
- (errno )
All Newton iterations that have been attempted have failed to converge.
No results have been generated. Check the coding of the functions for calculating the Jacobians of system and boundary conditions.
Try to provide a better initial solution approximation.
- Warns
- NagAlgorithmicWarning
- (errno )
A Newton iteration has failed to converge. The computation has not succeeded but results have been returned for an intermediate mesh on which convergence was achieved.
These results should be treated with extreme caution.
- (errno )
The expected number of sub-intervals required to continue the computation exceeds the maximum specified: .
Results have been generated which may be useful.
Try increasing this number or relaxing the error requirements.
- Notes
bvp_coll_nlin_solve
and its associated functions (bvp_coll_nlin_setup()
,bvp_coll_nlin_contin()
,bvp_coll_nlin_interp()
andbvp_coll_nlin_diag()
) solve the two-point boundary value problem for a nonlinear mixed order system of ordinary differential equationsover an interval subject to () nonlinear boundary conditions at and () nonlinear boundary conditions at , where . Note that is the th derivative of the th solution component. Hence . The left boundary conditions at are defined as
and the right boundary conditions at as
where and
First,
bvp_coll_nlin_setup()
must be called to specify the initial mesh, error requirements and other details. Note that the error requirements apply only to the solution components and that no error control is applied to derivatives of solution components. (If error control is required on derivatives then the system must be reduced in order by introducing the derivatives whose error is to be controlled as new variables. See Further Comments.) Then,bvp_coll_nlin_solve
can be used to solve the boundary value problem. After successful computation,bvp_coll_nlin_diag()
can be used to ascertain details about the final mesh and other details of the solution procedure, andbvp_coll_nlin_interp()
can be used to compute the approximate solution anywhere on the interval .A description of the numerical technique used in
bvp_coll_nlin_solve
is given in Notes for bvp_coll_nlin_setup.bvp_coll_nlin_solve
can also be used in the solution of a series of problems, for example in performing continuation, when the mesh used to compute the solution of one problem is to be used as the initial mesh for the solution of the next related problem.bvp_coll_nlin_contin()
should be used in between calls tobvp_coll_nlin_solve
in this context.See Further Comments for details of how to solve boundary value problems of a more general nature.
The functions are based on modified versions of the codes COLSYS and COLNEW (see Ascher et al. (1979) and Ascher and Bader (1987)). A comprehensive treatment of the numerical solution of boundary value problems can be found in Ascher et al. (1988) and Keller (1992).
- References
Ascher, U M and Bader, G, 1987, A new basis implementation for a mixed order boundary value ODE solver, SIAM J. Sci. Stat. Comput. (8), 483–500
Ascher, U M, Christiansen, J and Russell, R D, 1979, A collocation solver for mixed order systems of boundary value problems, Math. Comput. (33), 659–679
Ascher, U M, Mattheij, R M M and Russell, R D, 1988, Numerical Solution of Boundary Value Problems for Ordinary Differential Equations, Prentice–Hall
Keller, H B, 1992, Numerical Methods for Two-point Boundary-value Problems, Dover, New York