Abstract

In this paper we describe a new one-dimensional general purpose algorithm for adaptive quadrature. This algorithm differs from the well known, and high quality, general purpose code DQAG (QUADPACK) [6] in a number of aspects: 1. Three different basic rules are offered: Gauss, Lobatto or Gauss-Kronrod as integration rules over each local interval, while DQAG offers Gauss-Kronrod rules (with a choice of the number of evaluation points). This choice of rules is based on the experience, [1], that Gauss rules are at least as effective as Gauss-Kronrod rules in this kind of software and that closed rules (Lobatto) are better for discontinuous problems. 2. The local error estimation is based on a procedure developed in [1], and this procedure is principally the same for all three basic rules. A key element in this error estimation procedure is the null rules, first introduced in [5]. A rule is a null rule, N[f], iff it has at least one nonzero weight and the sum of the weights are zero A null rule is furthermore said to have degree d if it integrates to zero all polynomials of degree < d and fails to do so with f(x) = x d+1. The basic rule has degree of precision at least n while the null rules have degree of precision at most n - 1. In the code we use symmetric rules and a sequence of null rules of decreasing degrees n -1, n -2, …, which are either symmetric or anti-symmetric. We have chosen n = 20 and used a sequence of 8 (this number is based on heuristics) null rules of degrees 19, 18, …, 12. The null rules are combined into pairs to give 4 independent error estimates in order to create a reliable final local error estimate. Tests in [1] show that this error estimate is as reliable as the one implemented in QAG. The fact that the lowest degree null rule is as high as 12 (in [1] 8 symmetric null rules were used: lowest degree 5) makes the code more economic in regions where the function is smooth, without ruining the reliability. 3. As the subdivision strategy a non-uniform 3-division has been implemented based on ideas and experience reported in [4]. In this procedure one attempts to focus on the difficulty in order to reduce the effort in the adaptive algorithm. Tests of the new code confirm the results reported in [4] that this technique does reduce the number of function evaluations when adaptability is important. 4. The initial integration problem may consist of a collection of intervals. This way we allow the user to give information to the code about good subdivision points, but are still treating this as one quadrature problem. Thus the user gives only one error request for the whole problem. 5. Simultaneous integration of the elements in a vector function is also allowed. This idea is not new (e. g. it has been implemented in [2, 3]) however no one-dimensional code has, to the author’s knowledge, such an option. We found it necessary to include some modifications of the global strategy because of this feature. This option should be used with care since simultaneous integration of several functions, with different behavior in the integration region, may increase the overall computation time. However, in many problems there may be a substantial gain in simultaneous integration. 6. Finally, the code is designed to take advantage of shared memory parallel computers.

Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.