bvp advanced - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim

Numerical Solution of Difficult ODE Boundary Value Problems






This page describes some strategies and suggestions for the use of the dsolve/numeric bvp solver for difficult problems. It suggests possible solutions to be used in the case that default settings fail.


Initial Solution Problems


Related errors include:


initial Newton iteration is not converging


initial approximate solution not converging, may need a better approximation or more mesh points


In the case that an initial solution profile was not provided, the first error message indicates that dsolve/numeric cannot find a suitable initial solution profile. The second message indicates that because the provided solution profile is too different from the true solution, the Newton iteration is not converging.


There are three possible strategies for this type of problem.


1. Specify an initial approximation to the problem by using approxsoln (for the first case).


2. Determine a "nearby" problem, and use continuation and mincont to obtain an accurate initial profile.


3. Attempt an initial solution with a greater number of points than the default by using initmesh.


Continuation Problems


This includes the errors:


unable to refine continuation solution for parameter value ...


continuation failed for parameter value ...


The error messages suggest the use of a different continuation or a finer mesh, but a greater number of initial points (by using the initmesh argument) or a greater value for maxmesh may help.


Other Solution Errors


Unable to Achieve Requested Accuracy


The unable to achieve requested accuracy error indicates that either the abserr bound is set too tightly, or that maxmesh needs to be increased.


The unable to achieve continuous solution with requested accuracy error indicates that a discrete solution with the desired error could be found, but the error estimate of the interpolant used to construct a continuous solution could not be decreased below the requested error bound. This can be fixed in the same manner as the prior error. Alternatively, it can be fixed by requesting that the interpolation error step be skipped (by specifying interpolant=false or output=mesh).


Insufficient Precision


The unable to achieve requested accuracy due to round-off error and precision is insufficient for required absolute error messages indicate that the resulting discretized problem is probably somewhat ill-conditioned, or that the requested tolerance is set too low. The abserr bound or Digits environmental variable must be increased. Note: The minimum number of Digits with which the solver computes is double precision (use evalhfDigits to determine this number).


Newton iteration is not converging


This is a difficult problem. Often this error arises when a problem has narrow boundary layers or sharp corner layers. The best strategy for solving this problem is to try to obtain a low accuracy solution or a solution to a nearby problem. This may increase your understanding of the problem. Then use a change of variables to transform the boundary value problem into a more tractable problem that can be numerically solved more easily.


Other Errors


Other errors can occur, such as singularity encountered, and newton iteration has not sufficiently converged after max iteration count. The first of these errors is straightforward, the solution likely has a singularity in its domain, while the second suggests that a Richardson method be used instead of a deferred correction method.


Singular or Stiff Problems


The implemented methods for BVP solution are intended for non-stiff or mildly stiff BVP problems, with solutions having continuous higher order derivatives. If there are discontinuities in the higher order derivatives of the solution, the methods may be able to find a solution, but will not do so efficiently.


For an itemized description of the options mentioned here, consult the dsolve[numeric,bvp] help page.


Example of a precision error:





Error, (in `dsolve/numeric/bvp`) precision is insufficient for required absolute error, suggest increasing Digits to approximately 18 for this problem






dsol1procx_bvp...end proc















Use of Continuation:

Attempt to solve the following problem.







An error arises indicating that the initial Newton iteration does not converge.


Error, (in `dsolve/numeric/bvp`) initial Newton iteration is not converging

To solve this problem, choose a continuation that increases the coefficient of the second order derivative of the equation for lambda=0, and gives the solution for lambda=1.




The 1/10 is present to make the initial solution close to the desired solution. Now apply dsolve with continuation.


dsprocx_bvp...end proc


The desired solution is obtained.

Use plots[odeplot](ds) to view the solution. It shows a boundary layer at x=0.

For the following problem







you cannot obtain the solution directly:


Error, (in `dsolve/numeric/bvp`) Newton iteration is not converging

There is an easy solution of fx=0 if the right boundary condition was Df100=0, so use this as the continuation, and obtain a solution:





dsnprocx_bvp...end proc


and with the following plot, there is a boundary layer in the second derivative of the solution at t=0


See Also