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

 

Description

Examples

Description

• 

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.

Examples

Example of a precision error:

dsysdiffyx,x,x2yx=0,y0=1.2,y1=0.9

dsysⅆ2ⅆx2yx2yx=0,y0=1.2,y1=0.9

(1)

dsolvedsys,numeric,abserr=1.×10−16

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

Solution:

Digits20

Digits20

(2)

dsol1dsolvedsys,numeric,abserr=1.×10−16

dsol1procx_bvp...end proc

(3)

dsol10

x=0.,yx=1.2000000000000000000,ⅆⅆxyx=−1.2525189510786390887

(4)

dsol10.2

x=0.2,yx=0.99446362812308262645,ⅆⅆxyx=−0.81652895731295644453

(5)

dsol10.5

x=0.5,yx=0.83294209083370625916,ⅆⅆxyx=−0.27638519529089584694

(6)

dsol11

x=1.,yx=0.90000000000000000000,ⅆⅆxyx=0.55570110924051096309

(7)

Digits10:

Use of Continuation:

Attempt to solve the following problem.

ode1100diffyx,x,x+expyxdiffyx,x12πsin12πxexp2yx=0

odeⅆ2ⅆx2yx100+ⅇyxⅆⅆxyxπsinπx2ⅇ2yx2=0

(8)

bcsy0=0,y1=0

bcsy0=0,y1=0

(9)

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

dsolvebcs,ode,numeric

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.

newode1101λ+1100diffyx,x,x+expyxdiffyx,x12πsin12πxexp2yx=0

newode11100λ10ⅆ2ⅆx2yx+ⅇyxⅆⅆxyxπsinπx2ⅇ2yx2=0

(10)

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

dsdsolvebcs,newode,numeric,continuation=λ

dsprocx_bvp...end proc

(11)

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

odediffft,t,t,t+0.5ftdiffft,t,t=0

odeⅆ3ⅆt3ft+0.5ftⅆ2ⅆt2ft=0

(12)

bcsf0=0,Df0=0,Df100=1

bcsf0=0,Df0=0,Df100=1

(13)

you cannot obtain the solution directly:

dsolvebcs,ode,numeric

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:

newbcsf0=0,Df0=0,Df100=λ

newbcsf0=0,Df0=0,Df100=λ

(14)

dsndsolvenewbcs,ode,numeric,continuation=λ

dsnprocx_bvp...end proc

(15)

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

plotsodeplotdsn,t,diffft,t,t

See Also

Digits

dsolve

dsolve[numeric,bvp]

dsolve[numeric]