The method minimizes the sum of the squares of the errors, subject to nonnegativity of second divided differences, in two phases. Then, this approximation is used as the starting point of a dual-feasible quadratic programming algorithm that completes the calculation of the optimum. The constraints allow B-splines to be used, which reduce the problem to an equivalent one with fewer variables where the knots of the splines are determined automatically from the data points due to the constraint equations. The subroutine benefits from this reduction, since common submatrices that occur during the calculation are updated suitably.
Iterative refinement improves the accuracy of some calculations when round-off errors accumulate.
The subroutine has been applied to a variety of data having substantial differences and has performed fast and stably even for small data spacing, large n , and single-precision arithmetic. Driver programs and examples with output are provided to demonstrate the use of the subroutine. Refer to our notes on file compression if you have difficulty in downloading. Andrew Timothy Thornton Demetriou describes an implementation in Fortran 77 of Demetriou and Powell's algorithm to fit data contaminated with random errors to a convex function. The technique first approximates a solution, then uses quadratic programming with iterative refinement and automatic knot placement on B-splines to find the solution.