Using Computer Algebra to Choose and Apply Numerical Routines Brian J Dupee & James H Davenport School of Mathematical Sciences University of Bath Claverton Down Bath BA2 7AY United Kingdom email: fbjd,
[email protected] Abstract In applied mathematics, electronic and chemical engineering, the modelling process can produce a number of mathematical problems which require numerical solutions for which symbolic methods are either not possible or not obvious. With the plethora of numerical library routines for the solution of these problems often the numerical analyst has to answer the question Which routine to choose? and How do I use it? Some analysis needs to be carried out before the appropriate routine can be identi ed i.e. How sti is this ODE? and Is this function continuous? It may well be the case that more than one routine is applicable to the problem. So the question may become Which is likely to be the best? Such a choice may be critical for both accuracy and eciency. An expert system is thus required to make this choice based on the result of its own analysis of the problem, call the routine and act on the outcome. This may be to put the answer in a relevant form or react to an apparent failure of the chosen routine and thus choose and call an alternative. It should also have sucient explanation mechanisms to inform on the choice of routine and the reasons for that choice. Much of this work can be achieved using computer algebra and symbolic algebra packages. This paper describes an expert system currently in prototype in terms of both its object-based structure and its computational agents. Some of these agents are described in detail, paying particular attention to the practical aspects of their algorithms and the use of computer algebra. The axi.om2y Symbolic Algebra System is used as a user interface as well as the link to the NAG Foundation Library for the numerical routines and the inference mechanisms for the expert system.
This three-year project is funded by the Joint Information Systems Committee under their New Technologies Initiative (NTI 24) y axi.om, axi.om2 and axi.om-xl are registered trademarks of NAG Ltd
1 Introduction Deciding amongst, and then implementing, several possible approaches to solving a numerical problem can be daunting for a novice user, or tedious for an expert (Hopkins & Phillips, 1988). Dierent attributes of the problem need to be identi ed and their possible interactions weighed up before a nal decision about which method to use can be made. Once the method is chosen and the required parameters identi ed, the implementation is then largely an automatic, if laborious, process of writing, compiling and linking usually Fortran code. The aim is to build an expert system which will use computer algebra to analyse such features of a problem, inference mechanisms and a knowledge base to choose a numerical method appropriate to the solution of a given problem. Any interactive system is constrained by the need to provide a reasonable response time for the user. Given the complexity of some of the analysis our system will need to do, it is clear that we should only aim to select a good method, rather than try to identify the best one available. The overall goal is to provide a \black-box" interface to numerical software which allows nonexperts access to its full potential. It will also provide explanation mechanisms commensurate with its r^ole as a teaching aid. Given, say, an integration to perform (which may or may not be able to be handled symbolically), the system should choose and apply an appropriate method, thus mirroring as closely as possible the way that an experienced numerical analyst would think. So, for example, with
F (x) =
Z 1 ?3x2 e + e?x3 0
px
dx
(1)
the experienced analyst would see that the range of the integral is semi-in nite and transform it by splitting the range and transforming the integral over [1; 1] into an integral over [0; 1] using the mapping x 7! 1=t. The singularity at x = 0 in (1) would be recognised and therefore a dierent numerical routine might be used over each sub-region and the results added to give the nal answer. Even with this simple example, the process is quite involved. The application stage would be to translate the problem into Fortran code, which may be extensive (in writing possibly many lines of dicult-to-read, and thus dicult-to-check, code and in the time needed for compilation and linking) even if library code is used for individual methods. This is followed by amalgamation and transformation of the results from these calculations into the appropriate form for display. We need to translate all that expertise into a
exible and reliable system. So, for example, for the integral (1) the output of the proposed system would be:
(1) ->ans := integrate((exp(-3*x^2)+exp(-x^3))/sqrt(x),0..%plusInfinity) (1) [attributes: List(Any), d01apfUserTypeAnswer: Result, d01ajfUserTypeAnswer: Result, method: Result, result: DoubleFloat, abserr: DoubleFloat] Type: Result
for which each eld can be expanded as required. (2) ->meth := ans.method (2) [allMeasures: List(String), other: Result, bestMeasure: DoubleFloat, nameOfRoutine: String] Type: Result (3) ->meth.allMeasures (3) ["Trying semiInfinite integration routines", "d01asfmeasure: 0.0 - d01asf: A suitable weight has not been found", "d01amfmeasure: 0.5 - d01amf is a reasonable choice if the range of the integral is infinite or semi-infinite and d01transform cannot do better than using general routines", "d01transformmeasure: 0.609 - The recommendation is to transform the function and use d01apf and d01ajf" ] Type: List String (3) ->ans.result (3)
3.2328725625195833 Type: DoubleFloat
As an aside, it is clear that the integrand above is integrable on R+ but standard black-box symbolic techniques fail to solve this problem since the integral is not elementary, or even Erf{elementary. Indeed, both Maple and axi.om2 fail to evaluate the above integral using purely symbolic methods.
1.1 Decision Agents Some features are either present or absent in a problem. Examples of such binary decisions include is a matrix symmetric? and is a function continuous? However in practice many questions are about the degree to which a problem exhibits a property: how much does a function oscillate? , or how sti are these dierential equations? We have therefore created decision agents of two types, re ecting their property | Binary Agents are Boolean functions returning either true or false and Intensity Functions are quantitative and return a range
of dierent values, either numerical or structured types. The framework we are developing is able to deal with both these forms of information. In any given problem area (for example solving ordinary dierential equations, optimization etc.) we have a selection of methods. These might be to use a particular NAG routine, or they might involve employing a higher-level strategy such as transforming the problem into an equivalent, but easier to solve, form. Associated with every method we de ne a measure function which assesses the suitability of that method to a particular problem. Each measure function has access to a range of symbolic agents which can answer questions about the various properties of the problem in hand. How a measure function interprets the particular information it receives is up to itself and may vary between diering methods. However its assessment of the suitability or otherwise of a particular method to a particular problem is re ected in a single, normalised value. This facilitates the direct comparison of the suitability of dierent methods for the same problem, but also gives a practical handle with which a human expert can tune the system.
2 Inference Mechanisms The program is split into separate sections, each corresponding to a particular mathematical task (e.g. \integrate", \solve" etc.). The classi cation is similar, but not identical, to that of the NAG Library, since some tasks could be transformed and answered using routines outside the traditional chapters. There are two dierent kinds of package: computational agents which will help answer questions about attributes of the particular problem in hand, and methods which are particular techniques for solving that problem. So, for example, if we are interested in numerical integration the computational agents will be used to determine whether the integrand is continuous or has a particular singularity structure, whilst the methods will include strategies such as splitting the range of integration at discontinuities, or using particular numerical routines.
2.1 The Inference Machine The inference machine will take the problem description as provided by the user and perform an initial analysis to verify its validity. It will consider, in turn, all of the available methods within its knowledge base which might solve that problem. Each of these methods has the ability to calculate its \measure of compatibility" with the problem. Some of these measures may use lazy evaluation in the sense that, if a method already assessed is believed to be a good candidate, and if evaluating the current measure will be relatively
expensive, then that measure will not be evaluated unless later evidence shows that the selected method is not, in fact, a successful strategy, for example if it has failed.
2.2 The Use of the AXIOM Language in the Inference Mechanisms axi.om2 is an Symbolic Algebra System complete with an interactive user in-
terface. AXIOM and AXIOM-xl are strongly-typed functional programming languages for building modules which can be used as libraries or, in the case of AXIOM-xl, as stand-alone programs. The types, which are dynamic objects, are often mathematical structures such as polynomial or matrix, but can equally well be a list, table or an enumerated type. This type structure also extends to AXIOM Domains and Categories | types complete with allowable operations and interface. We can use as much or as little of the object-oriented paradigm as we feel necessary. Using this apparatus we can create all the necessary program modules for the Expert System.
Programs in AXIOM are contained in logically distinct modules called packages. There are two dierent sorts of inference package in our system. The rst contains the methods or strategies, implemented as AXIOM Domains, such as d01ajfUserType corresponding to the method of integration using the NAG numerical routine D01AJF. The second type, implemented as AXIOM Packages, contains the computational agents and other functions necessary for the analysis of the input problem. Auxiliary AXIOM Domains are those for the static knowledge representation i.e. the tables of attributes and requirements for individual methods, the recovery procedures on the possible failure of the chosen method, and knowledge about basic elementary functions, and the dynamic Knowledge representation such as the current state of the knowledge gained from the computational agents. The Inference Driver Package, which oversees the inference process, controls and monitors the inference process. It can perform a variety of tasks such as pruning the number of routines that are assessed to only those which address the problem speci cally, control the assessment of those routines and monitor the numerical calculation. It also acts as a buer on the user interface allowing a variety of possible input patterns. This also draws together the various strands of knowledge gained, to provide a range of explanation, either of the method used or the reasons for the choice of method.
2.3 Method Domains The method domains will each implement two functions:
measure: A function which calculates an estimate of suitability of this par-
ticular method to the problem if there is a possibility that the method under consideration is more appropriate than one already investigated. If it may be possible to improve on the current favourite method, the function will call computational agents to analyse the problem for speci c features and calculate the measure from the results these agents return, using a variation on the Lucks/Gladwell intensity and compatibility model if con ict between attributes, as investigated by these computational agents, may be present (Lucks & Gladwell, 1992). implementation: A function which may be one of two distinct kinds. The rst kind will use the NAGLINK interface to call a particular NAG routine with the required parameters. Some of the parameters may need to be calculated from the data provided before the external function call. The other kind will apply a \high level" strategy to try to solve the problem e.g. a transformation of an expression from one that is dicult to solve to one which is easier, or a splitting of the problem into several more easily solvable parts. For example, for a solution of equation 1, since the integral is semi-in nite we might wish to transform the range by, say, using the mapping y 7! 1=x on the section x 2 (1; 1) and adding the result to the unmapped section x 2 (0; 1).
2.4 Measure Functions and the Lucks/Gladwell Intensity and Compatibility Model Each measure function will estimate the ability of a particular method to solve a problem. It will consult whichever agents are needed to perform analysis on the problem in order to calculate the measure. However, the interpretation we give to the results of some tests is not always clear-cut. If a set of tests give con icting advice as to the appropriateness of a particular method, it becomes important to decide not only whether certain properties are present but also their degree. This gives us a basis for estimating the compatibility of each property. This type of measurement which we shall use when appropriate is investigated further: (Lucks & Gladwell, 1992). When we investigate the problem of sti dierential equations, we nd that the routines which are designed to handle these eciently, such as the Backward Dierentiation Formulae (BDF) method (Prothero, 1976b, 154{158) lose much of their power when asked for either a high degree of accuracy or with large systems of equations. This is since, for each step, the Jacobian needs to be calculated. So either reducing the stepsize or increasing the number of calculations per step impinges greatly on the eciency of the method. We therefore have a situation where dierent characteristics of the input problem act against each other. Lucks & Gladwell proposed a quantitative system using Intensity Functions and Compatibility Functions to estimate the
compatibility of each method to the ecient solution of the problem. The Intensity Functions form part of the computational agents, and the Compatibility Functions are included within the method domains.
3 Context NAG Fortran Library
6
?
Failures
??
Inference Machine
-
6
Naglink
??
Measure Functions
6
Computational Agents Functions
-
Routines
-
Parser
6
?
? AXIOM2 Symbolic Algebra Package
Output
4 Computational Agents Computational agents are those that investigate the attributes of the input function, such as Is this function continuous? and will usually be functions or programs written completely in AXIOM code and implemented using computer algebra. Some agents will be common to more than one problem domain whereas others will be speci c to a single domain. They may also vary greatly in their complexity. It will be a simple task to return details about the range of a function since this information will have been included in the problem speci-
cation. It is a dierent order of complexity to return details of its singularity structure. Each of these computational agents which may be called by a number of method domains retain their output in a dynamic hash-table, so speeding the process and retaining eciency. I describe below the theory and workings of two of the many agents used in the expert system as an illustration of their structure and use.
4.1 Continuity There are two types of test for continuity required, re ecting the de nitions of continuity at a point and within a given range. The rst is a general search for all singularities within (interior to) the range of de nition. A workable strategy for dealing with functions with multiple singularities is to split the function at those points and use each segment separately. In this case we need to know not only that such singularities exist, but also where in the range of de nition they are. For the most part we use a set of rules to recursively split the function and a look-up table. So for a; b 2 Elementary Expression singularitiesOf (ab) singularitiesOf (a) [ singularitiesOf (b) singularitiesOf ( a1 ) = zerosOf (a) singularitiesOf (ea) = singularitiesOf (a) singularitiesOf (a + b) singularitiesOf (a) [ singularitiesOf (b) singularitiesOf (log a) = zerosOf (a) zerosOf (ab) zerosOf (a) [ zerosOf (b) [ singularitiesOf (ab) zerosOf ( a1 ) = singularitiesOf (a) as well as those of more speci c nature such as tan(x) &tc. for which the look-up table is used. Since we are being conservative, we can replace the by = above. This may overestimate the number of singularities, including the possibility of indeterminate forms (e.g. where there might be removable singularities) and multiple entries, but such points can be investigated using series methods should the need arise. There remains the signi cant problem of nding the zeros of expressions of the form a + b. If a is constant, the system reduces so we only need to nd solutions of the form ?ab = 1 and either the look-up table or inverse functions can be used. Even easier is the case where a + b is polynomial for which there exist algorithms using, say, Sturm sequences (Collins & Loos, 1983; Mignotte, 1992). The diculty arises when we have non-trivial expressions a and b. To nd the zeros of expressions a + b, we will revert to power series methods, in particular
the Pade Approximant, and solve for the roots of the numerator polynomial (Baker & Graves-Morris, 1981). The second need for a test of continuity is allied to the search for end-point singularities of the algebraico-logarithmic type for which routines such as the NAG routine D01APF have been designed i.e. singularities of the form
f (x) = (x ? a)c(b ? x)d log(x ? a)m log(b ? x)n g(x) j x 2 [a; b]: (2) Here we use algorithms based on power series methods. If the function is dierentiable, it is necessarily continuous, so if a Taylor Series exists at the particular end-point, continuity is assured. If we can nd a Laurent Series or a Puiseux Series (a power series with powers of fractional degree) and the leading term is negative, the function is not continuous at that point. For essential singularities, we use exponential series and test the limits as we approach the point. Further computational agents exprHasAlgebraicWeights and exprHasLogarithmicWeights identify the values of c, d, m and n in equation 2.
4.2 Stiness In dynamics, chemical engineering and electronics, the study of physical systems and the modelling process produces dierential equations which may have solutions with both rapidly and slowly decaying components. One such analogy is a complex vibrating mass-spring system where the springs are of wildly dierent stiness coecients. In trying to obtain a numerical solution to a system of such equations, this diering behaviour causes major problems for some standard algorithms such as Runge-Kutta and Adams methods since the direction of the solution vector at any particular time is abnornally aected by the local behaviour. Certain alternative methods have been found to deal with this problem. It is therefore necessary to identify when such a system has a degree of stiness. Each system of dierential equations has an associated Jacobian matrix (a square matrix of partial derivatives) which can be evaluated at, or near, the initial values. The eigenvalues of such a matrix give an indication of the stiness of such a frozen system (Lambert, 1973, 228{236). It is assumed in many models of dynamic systems that the stiness ratios are constant throughout the range. This may not be the case in more arbitrary systems, where one might have to use alternative methods (Dekker & Verwer, 1984, 10{12). However, since the system is envisaged for real-world applications, and that the Jacobian eigenvalue method is both reliable and quick, it is the method of choice. So the computational agent StinessFactor calculates symbolically the Jacobian matrix and its real eigenvalues. Since symbolic methods can be expensive in nding complex eigenvalues, the computational agent uses a technique that
would seem perverse should it be considered by a numerical analyst. Should the number of real eigenvalues not equal the dimension of the Jacobian, the algorithm calls on the appropriate NAG Fortran Library routine to calculate them numerically. This can be considered since, once the link to the NAG Library is in place, the expense (in terms of time or eort) is not as high as either creating the code manually or continuing to use symbolic methods. This, in one way, can be considered an unusual programming style | creating a Fortran program to nd out which form of Fortran program should be created to solve the problem. However, it is a useful addition to the program's armoury. At the same time as investigating the stiness of the ODE, it calculates a stability factor which is the proximity of the argument of the polar representation of this eigenvalue to the imaginary axis. The eect of this proximity is a system with a large sine or cosine factor in its solution. This can also have a detrimental eect on certain routines, in particular those implementing the BDF method and, to a smaller extent, the Adams method.
5 Methods A number of methods can be applied to the dierent categories of each problem. Numerical integration requires both speci c and general routines to account for dierences in singularity structure and behaviour of the integrand. The solution of initial value problems of ordinary dierential equations needs dierent tactics for each class of problem. I will describe a method from each of these two domains.
5.1 Integration of a function with a Hilbertian Singularity An integral
Z y2
g(x) dx x y1 ? c has a singularity, called a Hilbertian Weight at x = c if c 2 (y1 ; y2). Complex F (x) =
analysis and residue theory shows that such a simple pole on it's own does not preclude integrability if g (x) is integrable (Stewart & Tall, 1983, 217{237). Certain numerical algorithms can be used to deal with such an integrand, but need to be told the exact location of this pole, and be sure that there are no other poles in that region. Such a routine is the NAG routine D01AQF. The AXIOM domain d01aqfUserType contains the two functions measure and numericalIntegration to get the measure of compatibility of the routine D01AQF to the problem and, should the routine be so compatible, implement the routine using the link to the NAG library, NAGLINK. The function measure rst checks that the integrand has a denominator prior to checking whether that denominator contains an algebraic weight x ? c where c is internal to the range
of the function. If there is more than one singularity, the method is rejected. The function stores the value of c and returns a positive measure indicating that the function has a reasonable likelihood to be able to be integrated using this method. If the method is the one having the best measure of compatibility, the function numericalIntegration passes the value c, along with the other input parameters and compiled Fortran functions for the evaluation of the integrand, to the NAG routine which returns a set of results including the required calculation.
5.2 Solution of a Set of Ordinary Dierential Equations using the Runge-Kutta Method The AXIOM domain d02bbfUserType tests the compatibility of the NAG routine D02BBF implementing the Runge-Kutta method to the input Ordinary Dierential Equation Initial Value Problem (ODEIVP) and performs the routine should it be required. The compatibility is calculated from the computational agents looking at the required accuracy of the result, the stiness factor of the equation and its related stability factor, and the expense of evaluation of the function. The computational agents return normalised values of these factors and the function measure combines them in a speci c way to take account of the dierent characteristics of the method. Since the presence of stiness in the system reduces the compatibility of the method, a mildly sti function will reduce the measure, as with the AdamsMoulton method. However, the stability has only a minor eect when compared to the eect on either the BDF or Adams codes. In this way, a composite picture is built up and a true measurement is calculated. The function ODESolve implements the routine. The alternative routine D02BHF is used if the algorithm is to halt when a particular function of (x; y ) is zero.
6 Description of the Prototype System The prototype covers the numerical routines for quadrature (11 methods, 8 agents and 3 tables) and the solution of initial value problems of ordinary differential equations (4 methods, 6 agents and 2 tables). These cover all of the major methods and possible diculties of the input function or set of functions. If, however, any given method has been shown to fail, there exists a set of procedures which can recover and possibly call other methods. Other mechanisms for the tuning of the system have been installed.
6.1 Input Once an axi.om2 session is in progress and the required directories of executable les are brought within scope, the complete system is available to the user. Commands are input directly to the system as command([parameter1][,parameter2]....).
In this case, the two commands used are integrate and solve, each of which takes a set of parameters covering the function to be integrated or set of functions which describe the system of ODE's, together with other values such as starting values, error tolerances etc. Tolerances must be oating point numbers, but other values may be anything which evaluates to a oating point number or, in the case of the range of integration, a sequence which may include a symbol which represents 1. So examples of input are of the form:
( :Expression Float, range:Segment Float, abserr:Float, :Float) e.g.
integrate f relerr
integrate((log(2-x)*log(x))/((2-x)^(2/3)*sqrt(x)),0..2,0,1.0e-8)
solve
and
(ode:List Expression Float, x1:Float, x2:Float, g:Expression Float, yinit:List Float, int vals:List Float, tol:Float)
Where values can be inferred or default values substituted, then these values can be omitted so
integrate((log(2-x)*log(x))/((2-x)^(2/3)*sqrt(x)),0..2,1.0e-8)
integrate((log(2-x)*log(x))/((2-x)^(2/3)*sqrt(x)),0..2)
and
can be used, although a default value is used for the relative error in the last example (currently 1:0e?5 ).
6.2 Output The output from a current AXIOM session is an ascii representation of mathematical constructs. Future versions of AXIOM may output a LATEX type script which could be formatted to give signi cantly improved readability, but this is not part of this project. The ascii output is of a similar type to other symbolic algebra packages.
6.3 Hyperdoc User Interface As well as the standard interactive keyboard input, as shown above, we have started to implement a series of hypertext based input and default pages which contain active paste/input areas for input of parameters. It can automatically create the command one would normally use to input such request. A small sample of these pages are shown in Figures 1-5.
Figure 1: Expert System Top Level Page We have also created a series of example pages (see Figure 6) which are both useful, when learning about the system and, since the implementation is designed such that the alteration of parameters is easily achieved, instructive to the student of Numerical Analysis. These will be extended to give a set of tutorials on each of the chapters. This hyperdoc interface will also contain the user documentation and the on-line help pages.
7 Results and Further Work Except for further ne-tuning of the intensity and compatibility functions for ordinary dierential equation solvers, the two areas completed i.e. integration (11 methods, 8 agents and 3 tables) and Initial Value Problems of ODE's (4 methods, 6 agents and 3 tables) work well with a large test-suite of problems covering all methods. The tuning mechanisms and the knowledge base are fully installed.
Figure 2: Integration Top Level Page
Figure 3: Integration Main Page
Figure 4: Integration Input Page
Figure 5: Integration Command Page
Figure 6: Integration Example Page Further work will concentrate on the mechanisms for numerical solvers for partial dierential equations and optimization. It is envisaged that this work, complete with documentation and having been fully tested, should be completed by October 1996.
References Baker, George A., & Graves-Morris, P. R. 1981. Encyclopaedia of Math-
ematics and its Applications: Pade Approximants, Part 1: Basic Theory. Reading, Massachusetts: Addison Wesley.
Barnett, D., & Kahaner, D. 1990. Experiences with an Expert System for
ODE's. In: (Houstis et al., 1990).
Buchberger, B., Collins, G. E., & Loos, R. with Albrecht, R (eds).
1983. Computer Algebra: Symbolic and Algebraic Computation. Wien: Springer-Verlag. Carroll, John. 1992. The R^ole of Computer Software in Numerical Analysis Teaching. SIGNUM Newsletter, 27(2), 2{31. Collins, G. E., & Loos, R. 1983. Real Zeros of Polynomials. In: (Buchberger et al., 1983). Conte, S. D., & de Boor, Carl. 1980. Elementary Numerical Analysis: An Algorithmic Approach. New York: McGraw-Hill.
Davenport, J. H., Siret, Y., & Tournier, E. 1988. Computer Algebra:
Systems and Algorithms for Algebraic Computation. London: Academic Press. Dekker, K., & Verwer, J. D. 1984. Stability of Runge-Kutte Methods for Sti Nonlinear Dierential Equations. Amsterdam: North Holland. Dewar, M.C. 1992. Using Computer Algebra to Select Numerical Algorithms. Pages 1{8 of: Wang, P.S. (ed), ISSAC 1992. New York: ACM. Dupee, B.J., & Davenport, J.H. 1995. An Expert System for Numerical Analysis. In: Proceedings of POLYMODEL{16: Applications of Arti cial Intelligence, University of Sunderland, May 23{24, 1995. Evans, D.J. (ed). 1974. Software for Numerical Mathematics. London: Academic Press. Proceedings of the Loughborough University of Technology Conference of the Institute of Mathematics and its Applications held in April 1973. Gear, C. William. 1971. Numerical Initial-Value Problems in Ordinary Differential Equations. Englewood Clis, NJ: Prentice-Hall. Gilewicz, J., Griffiths, M., & Mortada, A. 1990. An Expert System of the Choice and Parametrization of Algorithms for Pade Approximants. In: (Houstis et al., 1990). Gladwell, Ian, & Lucks, Michael. 1990. An Automated Consultation System for the Selection of Mathematical Software. In: (Houstis et al., 1990). Graves-Morris, P. R. (ed). 1972. Pade Approximants. London: The Institute of Physics. Lectures delivered at a Summer School held at the University of Kent, July 1972. Hall, G., & Watt, J.M. (eds). 1976. Modern Methods for Ordinary Dierential Equations. Oxford: Clarendon Press. Hopkins, Tim, & Phillips, Chris. 1988. Numerical Methods in Practice: Using the NAG Library. Wokingham, England: Addison-Wesley. Houstis, E. N., Rice, J. R., & Vichnevetsky, R. (eds). 1990. Intelligent Mathematical Software Systems. Amsterdam: North-Holland. Proceedings of the First IMACS International Conference on Expert Systems for Numerical Computing, Purdue University, April 1988. Houstis, E. N., Rice, J. R., & Vichnevetsky, R. (eds). 1992. Expert Systems for Scienti c Computing. Amsterdam: North-Holland. Proceedings of the Second IMACS International Conference on Expert Systems for Numerical Computing, Purdue University, April 1992. Jenks, Richard D., & Sutor, Robert S. 1992. AXIOM: The Scienti c Computation System. New York: Springer-Verlag.
Lambert, J.D. 1973. Computational Methods in Ordinary Dierential Equa-
tions. London: Wiley.
Lucks, Michael, & Gladwell, Ian. 1992. Automated Selection of Math-
ematical Software. ACM Transactions on Mathematical Software, 18(1), 11{34. Also published in (Houstis et al., 1992, 421 { 459) as `A Functional Representation for Software Selection Expertise'. Mignotte, Maurice. 1992. Mathematics for Computer Algebra. New York: Springer-Verlag. NAG. Fortran Library Manual { Mark 16. NAG Ltd, Oxford, UK. NAG Publication Code NP2478. Prothero, A. 1976a. Introduction to Sti Problems. In: (Hall & Watt, 1976). Prothero, A. 1976b. Multistep Methods for Sti Problems. In: (Hall & Watt, 1976). Stewart, Ian, & Tall, David. 1983. Complex Analysis. Cambridge, England: CUP. Walsh, J. 1974. Initial and Boundary Value Routines for Ordinary Dierential Equations. In: (Evans, 1974).