We present a MATLAB solver for the following class of nonlinear singular boundary value problems with a singularity of the first kind:
z'(t)=M(t)z(t)/t+f(t,z(t)), t∈ (0,1],
Baz(0)+Bbz(1)=β,
(1)
The code is based on collocation at either equidistant or Gaussian collocation points. For singular problems, the choice of equidistant nodes does not imply a loss of efficiency since no convergence order higher than the stage order can be expected in general. An error estimate for the global error of the approximate solution is also provided. This estimate is obtained by a modification of an idea due to Frank and Überhuber ([2]), who generalized an error estimate originally proposed by Zadunaisky ([3]). Our new estimate was introduced in [1], where its asymptotic correctness was also discussed. This estimate is the basis for an adaptive mesh selection strategy which proved robust with respect to the singularity. We discuss details of the efficient implementation in MATLAB 5.3, give a preview of a MATLAB 6.0 version, and illustrate the performance of the code.

References

[1] W. Auzinger, O. Koch, and E. Weinmüller. Efficient collocation schemes for singular boundary value problems. Submitted to Numer. Algorithms.

[2] R. Frank and C. Überhuber. Iterated Defect Correction for differential equations, Part I: Theoretical results. Computing, 20:207-228, 1978.

[3] P.E. Zadunaisky. On the estimation of errors propagated in the numerical integration of ODEs. Numer. Math., 27:21-39, 1976.