Symbolic Computation Group

David R. Cheriton School of Computer Science
University of Waterloo, Waterloo, Ontario, Canada

Generating Efficient Numerical Evaluation Routines for Bivariate Functions via Tensor Product Series
Keith Geddes, Symbolic Computation Group, Waterloo, Canada
Friday, January 16, 2009, at U. of Western Ontario.

Abstract:

Given a bivariate function f(x,y), we consider the problem of generating, in an automated manner, a routine for efficient numerical evaluation at any point in a specified rectangular region of the x-y plane. The goals for the generated routine are: accuracy (for a specified fixed precision), effciency, and the generated routine must be "purely numerical" in the sense that it can be translated into a language such as C and can be compiled for inclusion in a numerical library. For example, we are able to generate numerical evaluation routines for the various Bessel functions (with the order treated as a real-valued variable), and other bivariate functions, with significantly increased speed of evaluation compared with current implementations. We exploit the capabilities of a computer algebra system to achieve the desired level of automation. A fundamental tool in our method is the natural tensor product series developed in a doctoral thesis by Frederick W. Chapman in 2003. Using this technique, f(x,y) is approximated by an interpolation series such that each term in the series is a tensor product c_i g_i(x) h_i(y). The efficiency of approximation achieved by this method derives from the fact that the univariate basis functions are cross-sections of the original bivariate function. The bivariate approximation problem is thereby reduced to a sequence of univariate approximation problems which can be handled by various well-known techniques. Assuming that the univariate basis functions are analytic with isolated singularities, we apply singularity-handling techniques to ensure the e?ciency of the univariate approximations.

 

Last modified on Sunday, 04 November 2012, at 15:42 hours.