Subject: proposal to cut out romberg and quanc8 functions
From: Robert Dodier
Date: Tue, 2 Jan 2007 18:22:04 -0700
Hello, I want to cut out the romberg and quanc8 functions.
These are numerical quadrature functions which are superseded
by QUADPACK. I believe that it will improve Maxima to remove
these obsolete functions.
Specifically I want (1) to move
demo/rombrg.dem
doc/share/rombrg.usg
src/rombrg.lisp
share/numeric/qq.dem
share/numeric/qq.lisp
share/numeric/qq.usg
to the archive directory, and (2) to cut out the descriptions of the
romberg and quanc8 stuff from the reference manual.
(There is also a version of romberg which uses bigfloat computations.
I am undecided about whether or not to also remove that.)
romberg implements Romberg's extrapolation method.
quanc8 implements an adaptive Newton-Cotes method.
These methods are superseded by the Gauss-Kronrod methods
implemented in QUADPACK. The QUADPACK functions are
extrapolation methods, and the basic rules are Gaussian
quadrature rules. Also, QUADPACK contains methods for
specific problems (infinite interval, integrand with diferent
weight functions, Cauchy principal value) and romberg and
quanc8 do not.
Empirically I have tested the romberg, quanc8, and quad_qags
(from QUADPACK) on a set of 15 problems collected from the
documentation for romberg, quanc8, and QUADPACK.
Except for one problem in which numerical integration is expected
to fail, I found that quad_qags always reports success and always
meets the specified relative error tolerance (1e-6).
romberg failed to converge or failed with a programming error
in several cases, although it met the error tolerance otherwise.
quanc8 failed to converge or failed with a programming error in
some cases, and reported success without meeting the relative
error tolerance in some others, and reported success and met
the error tolerance in others.
Thus I believe that it can established that QUADPACK is superior
both from theoretical considerations and empirical observations.
I would like to know if you are opposed to cutting romberg and quanc8.
All the best, & hope this helps,
Robert Dodier
PS.
input script: http://maxima.sourceforge.net/misc/compare_quadrature.mac
raw output: http://maxima.sourceforge.net/misc/compare_quadrature.log
summary: http://maxima.sourceforge.net/misc/compare_quadrature.txt
(and also shown here)
legend:
(t/F, nnn) = (met relative error claim, #function evaluations)
F.C. = failed to converge
f.c.e. = failed to converge, but that was expected
X/0 = division by 0
quad_qags romberg quanc8
F1 (t, 609) F.C. (t, 289)
F2 (t, 441) (t, 85) (t, 1089)
F3 (t, 2037) F.C. (F, 481)
F4 (t, 105) (t, 257) (t, 65)
F5 (t, 21) (t, 17) (t, 33)
F6 (t, 21) (t, 65) (t, 33)
F7 (t, 399) F.C. (t, 305)
F8 (t, 357) (t, 2049) (F, 145)
F9 (t, 441) (t, 277) (t, 5937)
F10 f.c.e. f.c.e. f.c.e.
F11 (t, 525) (t, 2049) (F, 33)
F12 (t, 525) (t, 1025) (t, 353)
F13 (t, 231) X/0 X/0
F14 (t, 693) F.C. F.C.
F15 (t, 819) X/0 X/0