European Society of Computational Methods
in Sciences and Engineering (ESCMSE)
Journal of Numerical Analysis,
Industrial and Applied Mathematics
(JNAIAM)
vol. 4, no. 1-2, 2009, pp. 65-76
ISSN 1790–8140
Variable Step/Order Generalized Upwind Methods
for the Numerical Solution of Second Order
Singular Perturbation Problems1 2
Pierluigi Amodio3 , Giuseppina Settanni4
Dipartimento di Matematica,
Università di Bari,
I-70125 Bari, Italy
Received 14 March, 2009; accepted in revised form 19 April, 2009
Abstract: We propose a simple and quite efficient code to solve singular perturbation
problems when the perturbation parameter ǫ is very small. The code is based on generalized
upwind methods of order ranging from 4 to 10 and uses highly variable stepsize to fit the
boundary regions with relatively few points. An extensive numerical test section shows the
effectiveness of the proposed technique on linear problems.
c 2009 European Society of Computational Methods in Sciences and Engineering
Keywords: Two-point Boundary Value Problems, singular perturbation problems, finite
difference schemes, upwind method, mesh variation.
Mathematics Subject Classification: 65L10, 65L12, 65L20
PACS: 02.60.Lj, 02.70.Bf
1
Introduction
The solution of two-point boundary value problems is one of the classical topics of numerical analysis since these problems model many real life phenomena arising, for example, from fluid mechanics,
optimal control, chemical-reactor theory, reaction-diffusion process. We are here interested in the
approximation of general second order ODEs
F(x, y, y ′ , y ′′ ) = 0,
x ∈ [a, b],
(1)
subject to Dirichlet boundary conditions
g(y(a), y(b)) = 0,
1 Work
developed within the project ”Numerical Methods and Software for Differential Equations”
electronically June 15, 2009
3 Corresponding author. E-mail: amodio@dm.uniba.it
4 E-mail: settanni@dm.uniba.it
2 Published
(2)
66
P. Amodio, G. Settanni
where F and g are sufficiently smooth functions. Codes that can be used to solve (1)-(2) are
TWPBVP [11] and its variants [8], MIRKDC and its new implementation BVP SOLVER [19],
COLSYS [4] and COLNEW [5] (see also [10]), and the MATLAB codes TOM [16] and BVP4c [18].
Most of the above numerical methods can only be applied to first-order equations and hence
they require a rewriting of the original higher order problem (1). An alternative approach would
be for finite differences to approximate each derivative separately and these would be cheaper when
they are directly applied to (1)-(2). In [1] some new methods in this class have been proposed
that combine generalizations of the central differences to approximate the second derivative with
generalization of forward/backward/central differences for the first derivative. Following the idea
inherited from Boundary Value Methods (see [6] for a review on the approach) the main feature
of this approach is that of combining one main formula with additional initial and final ones. The
obtained methods do not require additional boundary conditions apart from (2). Thus, methods
of arbitrary high order with similar stability properties as the original two-step methods are easily
derived.
In [2] the same methods have been combined in order to obtain high order generalizations of
the first order upwind method and have been applied to singular perturbation problems in the
form
ǫy ′′ = f (x, y, y ′ ),
x ∈ [a, b], y ∈ R,
(3)
where f is a sufficiently smooth function and ǫ > 0 is a small parameter. Due to this small parameter the solution has thin regions of fast variation (layers). This problem has been extensively
studied in the past and several codes have been developed which are able to vary the stepsizes in
order to compute accurate solutions even when ǫ ≈ 0. Among these codes we mention COLMOD
(a modification of COLNEW), based on collocation methods, and ACDC (a modification of TWPBVP), based on Lobatto Runge-Kutta formulae. Both codes were developed by J. Cash and
R. W. Wright and use an automatic continuation strategy to solve more difficult problems [9].
In this paper we develop a variable step, variable order approach that allows us to efficiently
solve (3)-(2) when ǫ is very small, that is in cases where the usual solvers require a much larger
number of points. Although the proposed strategy has only been tested on linear problems, preliminary results on nonlinear problems seem to confirm the effectiveness of both methods and, in
particular, step-variation strategy.
The paper is organized as follows: in the next section we introduce the generalized upwind
method and show the main features of this class of methods when variable step is used. Section 3
shows the algorithm which is used for varying the stepsize and the order. Finally, the last section
is devoted to various test examples, chosen from the Test Set of Cash [7]. These have been useful
to set some parameters in the code.
2
Generalized upwind methods
Upwind methods are classical difference schemes which have been used to solve both ordinary and
partial differential equations. Historically, the idea of using a method which depends on the sign of
the characteristic speeds was applied to the solution of hyperbolic PDEs (i.e., the wave equation)
to numerically simulate more properly the direction of propagation of information in a flow field.
For second order ODEs (1) the first derivative represents the diffusion term and needs to be treated
accordingly to its sign.
In this paper the overall method is obtained by devising finite difference methods (all of even
order) which are applied to each derivative appearing in the differential equation. In particular,
the second derivative is approximated by centered differences while the first one is approximated
by forward/backward differences (GFDFs/GBDFs) depending on the sign of ∂f /∂y ′ (see [2]). Let,
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
Upwind methods for second order singular perturbation problems
67
for example,
a = x0 < x1 < · · · < xn+1 = b
be an equispaced mesh with stepsize h =
following formulae of even order k
(ν)
y (ν) (xi ) ≃ yi
=
b−a
n+1 .
(4)
To discretize each derivative we make use of the
k−s
1 X (s)
α yi+j ,
hν j=−s s+j
s = 1, . . . , k − 1,
(5)
where ν = 1, 2, the integer s depends on the choice of the number of initial conditions and the
(s)
coefficients αs+j are computed by imposing maximum-order conditions, that is by solving a Vandermonde linear system generated by the vector [0 : k]. Then, a high order generalized upwind
(HOGUP) method of order k is obtained by choosing for the second derivative
• k/2 − 1 different initial methods to approximate y ′′ (xi ), i = 1, . . . , k/2 − 1 (we set s = i in
(5)),
• one main method to approximate y ′′ (xi ), i = k/2, . . . , n − k/2 + 1 (we set s = k/2),
• k/2 − 1 different final methods to approximate y ′′ (xi ), i = n − k/2 + 2, . . . , n (we set s =
i − n + k − 1),
and, for the first derivative,
• k/2 − 1 different initial methods to approximate y ′ (xi ), i = 1, . . . , k/2 − 1 (we set s = i),
• one method chosen between a GFDF (s = k/2 − 1) and an ECDF (s = k/2) to approximate
y ′ (xk/2 ) according to the sign of ∂f /∂y ′ in xk/2 (less or greater than 0, respectively),
• the main method to approximate y ′ (xi ), i = k/2 + 1, . . . , n − k/2, chosen between GFDF
and GBDF (s = k/2 + 1) according to the sign of ∂f /∂y ′ in xi (less or greater than 0,
respectively),
• one method chosen between an ECDF and a GBDF to approximate y ′ (xn−k/2+1 ) according
to the sign of ∂f /∂y ′ in xn−k/2+1 (less or greater than 0, respectively),
• k/2 − 1 different final methods to approximate y ′ (xi ), i = n − k/2 + 2, . . . , n (we set s =
i − n + k − 1).
In [2] it is proved that the combination of the above methods gives rise to stable approximations
if used with constant stepsize to solve linear second order BVPs with constant coefficients. This
means that we are able to obtain the correct behaviour of the solution with a very small number
of mesh points. For well conditioned linear problems we have occasionally observed a wrong
behaviour of the solution with a small number of points when the sign of the coefficient of the
first derivative changes, that is, in the case where both GBDFs and GFDFs are used to discretize
the first derivative. Anyway, this could happen for very small ǫ and a very small number of
discretization points (less than 20 points for the order 4, 50 for the order 10). In such a situation
the proposed code doubles the number of points. Conversely, in the case of ill-conditioned problems
(the sign of ∂f /∂y in (3) is negative), the solution is wrong until a very small stepsize is used.
The aim of this paper is that of using variable stepsize to discretize singular perturbation
problems with very small ǫ. On the other hand, we do not want to waste the nice properties
that these methods have when they are used with constant stepsize. Therefore, we discretize the
integration interval [a, b] by means of piecewise constant grids such that the stencil used for each
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
68
P. Amodio, G. Settanni
formula changes stepsize at most once. Moreover, in the first and last points we use the initial and
final methods with constant stepsize.
The variable-step coefficients of the main methods
y ′′ (xi+k/2−s ) ≃
y ′ (xi+k/2−s+t ) ≃
k−s
1 X (s)
α̃ yi+j ,
h2i j=−s j
k−s
1 X (t,s)
β̃
yi+j ,
hi j=−s j
s = 1, . . . , k − 1,
t = −1, 1,
s = 1, . . . , k − 1,
(6)
(7)
are still computed by solving Vandermonde linear systems generated by the vector [−s : 0 (1 :
(k − s))v], where now s represents the number of steps equal to hi (the others are equal to hi+1 )
and v = hi /hi+1 . For all these choices the coefficients have been computed algebraically. From
their analysis we observe that they might change sign or increase/decrease for values of v different
from 1. For this reason we decided to change stepsize at least every k + 4 points (we use 3 constant
steps methods before changing the stepsize, if necessary) and to bound v according to the following
table
Table 1: Maximum ratio between two successive steps
order
v
3
4
15
6
10
8
7
10
5
Stepsize and order variation strategy
The proposed algorithm combines order 4, 6, 8 and 10 HOGUP methods with piecewise constant
stepsize to solve two-point linear singular perturbation problems with very small perturbation
parameters ǫ. The solution of nonlinear problems by means of standard techniques such as Newton’s
method or quasilinearization will be subject of research in the near future. Anyway, preliminary
results on classical nonlinear problems seem to confirm that the HOGUP methods do not exhibit
any particular problems. On the contrary, we have observed that the methods used and the stepsize
variation techniques considered do not work with ill-conditioned problems, that is with problems
(3) having the sign of ∂f /∂y negative. Modifications to this well-established approach will be
necessary to solve this class of problems.
The choice of the order is strictly connected to the desired precision. Low orders allow us to
determine the first variable meshes with a suggestion on the location of the layer and relatively few
points. The computed mesh can then be used by higher orders to quickly obtain better accuracy.
The following algorithm summarizes the proposed variable order approach:
function [x, y] = HOGUP (‘problem’, tol)
ord = 4;
x
e = a : (b − a)/10 : b;
ye = ya : (yb − ya )/10 : yb ;
ltol = max(1e-3, tol);
while kerrk < tol
[x, y, err] = genup (‘problem’, ord, ltol, x
e, ye);
if kerrk > tol
ltol = max(kerrk/100, tol);
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
Upwind methods for second order singular perturbation problems
end
69
ord = ord + 2;
[e
x, ye] = adjmesh (x, y, ord + 4);
end
Hence, we solve (3)-(2) starting from n = 10, constant stepsize and order 4. The starting mesh
is updated until we obtain a solution with a computed absolute/relative error less then 10−3 . This
essentially means that the stepsize used is smaller than the width of the layer. Then, the process
is iterated by increasing the order of the method and decreasing the exit tolerance.
It is remarkable to observe that, since we want to derive a piecewise constant mesh which
depends on the order used, the vector computed for a certain order must be adapted to satisfy the
restriction for the next one. This is made in adjmesh by increasing the number of constant points
in each sub-interval with less than ord + 4 constant steps, or bringing together two sub-intervals
with almost the same stepsize. Moreover the number of points in each sub-interval is increased in
order to satisfy the restriction in Table 1.
The step variation technique is applied inside the genup function and allows us to compute,
for fixed order ord and input tolerance tol, a numerical solution with maximum error less than tol.
The error is approximated using the solution given by the method of order ord + 2 on the same
mesh.
We pay particular attention to the function monitor which is to be found inside the function
genup and allows us to compute the new grid x starting from the old grid x
e and the computed
error err. It is described by the following function:
function x = monitor (err, x
e, ord, tol)
n = length(e
x) − 1;
h=x
e(2 : n) − x
e(1 : n − 1);
t = max(err(2 : n + 1), err(1 : n))ˆ(1/ord);
n∗ = ⌊ktk1 /tolˆ(1/ord)⌋;
if nktk∞ /ktk1 ≤ 1.2 & n∗ ≥ 2 · n
x is obtained halving the step-length vector h
else
n∗ = max(min(n∗ , ⌊1.2 · n⌋), ⌊n/1.2⌋);
I = [0 cumsum(t)]/ktk1 ;
z = 0 : 1/n∗ : 1;
x
b = linear_interp(I, x
e, z);
x = piecewise_grid(b
x, ord + 4);
end
The function monitor is based on an equidistribution of the vector t that contains the error in
each step raised to the power of 1/ord. With this aim, starting from t, we derive an ordered vector
in the range [0, 1] and equidistribute by means of inverse linear interpolation.
The newnumber
of points is chosen in the range [n/1.2, 1.2n] and is originally set equal to ktk1 /(tol)1/ord . Then,
the obtained grid is modified by piecewise_grid in order to have piecewise constant steps.
The function piecewise_grid starts from the minimum step and determines ord+4 consecutive
constant steps which are able to overlay exactly some steps of the previous grid. This procedure is
iterated on the remaining part of the grid in order that the new steps are greater than or equal to
those already computed and the ratio of two consecutive steps is bounded by the values in Table 1.
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
70
P. Amodio, G. Settanni
4
Numerical examples
In this section we give some results on the convergence behavior of the matlab code HOGUP on
four singular perturbation problems contained in the “BVP software page” of J. Cash [7], and we
compare these with analogous results of the packages ACDC and COLMOD (see [7]). We stress
that a fair comparison is not possible because the HOGUP code is based on multistep methods and
hence the number of points exactly represents the size of the problem solved. The computational
cost of the other two codes also depends on other parameters such as, for example, the order of
the methods used, which are not reflected in the number of points. As a matter of fact, even if the
package COLMOD always needs a number of mesh points lower than ACDC, its execution time
is higher for the largest values of ǫ. Finally, we recall that COLMOD needs to be applied to first
order problems, and therefore its number unknowns should be doubled.
For our numerical experiments we have chosen a uniform initial mesh with 10 points and
tol = 10−8 . Moreover, we have used methods of order 4, 6 and 8 for the order variation strategy.
We have set the maximum number of allowed mesh points to 1500 and computed an approximation
of the maximum relative error in the numerical solution by means of two successive orders and the
formula
(p)
(p+2)
|y − yi
|
max i
.
1≤i≤n 1 + |y (p+2) |
i
In the following Tables 2-5 we report the meshlength required by the codes HOGUP, ACDC
and COLMOD for ǫ ranging from 10−1 to 10−10 . In Figures 1-4 we report the number of points
required by the order/step variation strategy for ǫ = 10−3 , 10−6 , 10−9 . On the y axis we show the
exact maximum relative error given by the formula
(p)
|yi − ye (xi )|
,
1≤i≤n 1 + |ye (xi )|
max
where ye represents the exact solution.
Problem 1 Let us consider the test problem 4 in [7]
ǫy ′′ + y ′ − (1 + ǫ)y = 0,
x ∈ [−1, 1],
with boundary conditions y(−1) = 1 + exp (−2), y(1) = 1 + exp (−2(1 + ǫ)/ǫ). The exact solution
1+ǫ
ye (x) = exp (x − 1) + exp −
(1 + x) .
ǫ
has a boundary layer of width O(ǫ) at x = −1.
From Table 2 we deduce that the number of meshpoints of the HOGUP code is two/three
times higher than ACDC and COLMOD for almost all values of ǫ. ACDC does not work for
ǫ = 10−9 , 10−10 while the value of COLMOD is not available for ǫ = 10−10 .
In Fig. 1 we plot the behaviour of the HOGUP code for some values of ǫ. Only few steps of the
orders 6/8 are necessary to reach the requested tolerance when the order 4 method gives a solution
with err < 10−3 . Nevertheless, the number of steps required by the order 4 method is 7, 13 and
17 for the three tests, that is to obtain a stepsize smaller than O(ǫ) in the layer. For ǫ = 10−9
COLMOD requires 9 continuation steps and the computation of 20 mesh (the same as HOGUP),
but with half of the total number of points. ACDC has similar results, but with the same number
of total points as HOGUP.
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
Upwind methods for second order singular perturbation problems
71
Table 2: Test problem 1: meshlength to obtain a solution with an error less than 10−8 .
ǫ
10−1
10−2
10−3
10−4
10−5
10−6
10−7
10−8
10−9
10−10
HOGUP
76
84
151
155
161
237
284
291
346
437
ACDC
34
42
49
50
66
93
93
107
700
4311
COLMOD
43
56
60
60
72
81
81
101
113
–
0
10
order 4
order 6
order 8
−2
10
−4
ε = 1e−6
10
ε = 1e−9
−6
10
ε = 1e−3
−8
10
−10
10
0
50
100
150
200
250
300
350
Figure 1: Test problem 1: step/order variation strategy to obtain an error less than 10−8 .
Problem 2 Let us consider the test problem 6 in [7]
ǫy ′′ + xy ′ = −ǫπ 2 cos (πx) − πx sin (πx),
x ∈ [−1, 1],
with boundary conditions y(−1) = −2, y(1) = 0. The exact solution
√
erf(x/ 2ǫ)
√
ye (x) = cos (πx) +
erf(1/ 2ǫ)
has a shock layer in the turning point region near x = 0.
Here the coefficient of y ′ changes its sign and there is no y-term. As noted in Section 2, the
initial solutions (with 10/20 points) are different from the theoretical one, and the meshlength
doubles in the first two or three steps. The number of points required by HOGUP is comparable
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
72
P. Amodio, G. Settanni
0
10
order 4
order 6
order 8
−2
10
−4
10
ε = 1e−6
ε = 1e−3
ε = 1e−9
−6
10
−8
10
−10
10
0
50
100
150
200
250
300
350
400
450
Figure 2: Test problem 2: step/order variation strategy to obtain an error less than 10−8 .
to ACDC, but the latter code does not work for ǫ = 10−9 . COLMOD requires a smaller number
of points, but from 10−1 to 10−8 it requires an execution time higher than ACDC.
Table 3: Test problem 2: meshlength to obtain a solution with an error less than 10−8 .
ǫ
10−1
10−2
10−3
10−4
10−5
10−6
10−7
10−8
10−9
10−10
HOGUP
52
111
148
202
325
254
302
408
439
505
ACDC
33
79
111
127
153
195
394
402
458
1153
COLMOD
46
81
100
112
118
120
122
128
134
178
From Fig. 2 we observe that the convergence behaviour of the HOGUP method is fairly good
in all cases. For ǫ = 10−9 the mesh given by the order 4 method has been completely reassembled
and reduced in length by the order 6 method. The number of computed meshes for each ǫ is up to
14, that is, almost the same number required by the other codes.
Problem 3 Let us consider the test problem 7 in [7]
ǫy ′′ + xy ′ − y = −(1 + ǫπ 2 ) cos (πx) − πx sin (πx),
x ∈ [−1, 1],
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
Upwind methods for second order singular perturbation problems
73
order 4
order 6
order 8
−2
10
−3
10
−4
10
ε = 1e−3
−5
10
ε = 1e−9
−6
10
ε = 1e−6
−7
10
−8
10
0
50
100
150
200
250
300
Figure 3: Test problem 3: step/order variation strategy to obtain an error less than 10−8 .
with boundary conditions y(−1) = −1, y(1) = 1. The exact solution
p
√
x erf(x/ 2ǫ) + 2ǫ/π exp (−x2 /2ǫ)
p
√
ye (x) = cos (πx) + x +
erf(1/ 2ǫ) + 2ǫ/π exp (−1/2ǫ)
has a corner layer in the turning point region near x = 0.
From Table 4 we deduce similar results as the previous example. The only differences are that
the meshlength of ACDC becomes higher than that of HOGUP for ǫ < 10−6 and COLMOD is
able to require up to 1/4 of the number of points of HOGUP.
From Fig. 3 we derive that order 4 method computes a solution with the requested tolerance
with relatively few steps while the order 6 method requires some additional steps. For ǫ = 10−9 ,
order 8 method seems to increase too much the number of points to reach tol = 10−8 .
Table 4: Test problem 3: meshlength to obtain a solution with an error less than 10−8 .
ǫ
10−1
10−2
10−3
10−4
10−5
10−6
10−7
10−8
10−9
10−10
HOGUP
40
77
88
121
144
171
201
252
307
321
ACDC
40
56
81
100
116
204
300
464
728
1615
COLMOD
45
58
68
70
70
70
72
76
76
79
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
74
P. Amodio, G. Settanni
order 4
order 6
order 8
−2
10
−4
10
ε = 1e−9
−6
10
ε = 1e−6
−8
10
ε = 1e−3
−10
10
0
50
100
150
200
250
300
350
400
Figure 4: Test problem 4: step/order variation strategy to obtain an error less than 10−8 .
Problem 4 Let us consider the test problem 14 in [7]
ǫy ′′ − y = − ǫπ 2 + 1 cos(πx),
x ∈ [−1, 1],
√
with boundary conditions y(−1) = y(1) = exp(−2/ ǫ). The exact solution
√
√
ye (x) = cos (πx) + exp ((x − 1)/ ǫ) + exp (−(x + 1)/ ǫ)
√
has boundary layers of width O( ǫ) near x = −1 e x = 1.
This is the only problem considered with two boundary layers, but the results obtained trace
out those of the previous example (here the number of points of COLMOD is halved with respect
to HOGUP). The only thing to note is that for small ǫ few points are sufficient to compute an
Table 5: Test problem 4: meshlength to obtain a solution with an error less than 10−8 .
ǫ
10−1
10−2
10−3
10−4
10−5
10−6
10−7
10−8
10−9
10−10
HOGUP
41
84
132
150
192
197
248
304
392
419
ACDC
29
49
91
123
151
216
265
311
521
768
COLMOD
45
69
99
115
124
130
142
143
158
188
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
Upwind methods for second order singular perturbation problems
75
accurate solution because there are no points near the layer. In the step variation strategy, the
error increases when the number of points increases and decreases when there are points inside the
layer.
5
Conclusion
We have proposed a new code for solving second order singular perturbation problems. With
reference to linear problems, we can conclude that the code is better than ACDC for small values
of ǫ on the problems we have considered. COLMOD always requires small meshlengths, but its
comparison with ACDC in terms of execution time allows us to deduce that its computational cost
for the same n is much higher.
The two main objectives of this research in the near future will be to extend this approach to
the solution of nonlinear problems and to provide a Fortran implementation of the code. Both will
be necessary to effectively compare the codes considered in this paper.
References
[1] P. Amodio and I. Sgura, High-order finite difference schemes for the solution of second-order
BVPs, J. Comput. Appl. Math. 176 (2005), 59–76.
[2] P. Amodio and I. Sgura, High order generalized upwind schemes and numerical solution of
singular perturbation problems, BIT 47 (2007), 241-257.
[3] U.M. Ascher, R.M.M. Mattheij and R.D. Russell, Numerical Solution of Boundary Value
Problems for ODEs, Classics in Applied Mathematics 13, SIAM, Philadelphia, 1995.
[4] U. Ascher, J. Christiansen and R.D. Russell, Algorithm 569: COLSYS: Collocation Software
for Boundary-Value ODEs, ACM Trans. Math. Software 7 (1981), 223–229.
[5] G. Bader and U. Ascher, A new basis implementation for a mixed order boundary value ODE
solver, SIAM J. Sci. Statist. Comput. 8 (1987), 483–500.
[6] L. Brugnano and D. Trigiante, Solving Differential Problems by Multistep Initial and Boundary Value Methods, Gordon and Breach Science Publishers, Amsterdam, 1998.
[7] J. Cash, BVP Software web page,
http://www.ma.ic.ac.uk/∼jcash/BVP software/readme.html.
[8] J.R. Cash and F. Mazzia, A new mesh selection algorithm, based on conditioning, for twopoint boundary value codes, J. Comput. Appl. Math. 184 (2005), 362–381.
[9] J.R. Cash, G. Moore and R.W. Wright, An automatic continuation strategy for the solution
of singularly perturbed linear two-point boundary value problems, J. Comput. Phys. 122 (1995),
266-279.
[10] J.R. Cash and M.H. Wright, A deferred correction method for nonlinear two-point boundary
value problems: implementation and numerical evaluation, SIAM J. Sci. Statist. Comput. 12
(1991), 971-989.
[11] J.R. Cash and M.H. Wright, Users Guide for TWPBVP: A Code for Solving Two-Point
Boundary Value Problems,
http://www.ma.ic.ac.uk/∼jcash/BVP software/twpbvp/twpbvp.pdf.
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)
76
P. Amodio, G. Settanni
[12] J.R. Cash and R.H. Wright, User’s guide for ACDC: An automatic continuation code for
solving stiff two-point boundary value problems, available at
http://www.ma.ic.ac.uk/∼jcash/BVP software/readme.html.
[13] W.H. Enright and P.H. Muir, Runge–Kutta software with defect control for boundary value
ODEs, SIAM J. Sci. Comput. 17 (1996), 479-497.
[14] E.C. Gartland, Uniform high-order difference schemes for a singularly perturbed two-point
boundary value problem, Math. Comp. 48 (1987), 551–564.
[15] R. Lynch and J.R. Rice, A high-order difference method for differential equations, Math.
Comp. 34 (1980), 333–372.
[16] F. Mazzia, BVP Software web page,
http://www.dm.uniba.it/∼mazzia/bvp/index.html.
[17] H.G. Roos, M. Stynes and L. Tobiska, Numerical Methods for Singularly Perturbed Differential Equations: Convection-Diffusion and Flow Problems, Springer-Verlag, Berlin, 1996.
[18] L.F. Shampine, M.W. Reichelt and J. Kierzenka, Solving Boundary Value Problems for
Ordinary Differential Equations in MATLAB with bvp4c, available at
ftp://ftp.mathworks.com/pub/doc/papers/bvp/.
[19] L.F. Shampine, P.H. Muir and H. Xu, A user-friendly Fortran BVP solver, J. Numer. Anal.
Ind. Appl. Math. 1 (2006), 201–217.
c 2009 European Society of Computational Methods in Sciences and Engineering (ESCMSE)