IBM Books

Engineering and Scientific Subroutine Library for AIX Version 3 Release 3: Guide and Reference

SGHMQ and DGHMQ--Numerical Quadrature Performed on a Function Using Gauss-Hermite Quadrature

These functions approximate the integral of a real valued function over the entire real line, using the Gauss-Hermite Quadrature method of specified order.

Table 166. Data Types

a, b, Result Subroutine
Short-precision real SGHMQ
Long-precision real DGHMQ

Syntax

Fortran SGHMQ | DGHMQ (subf, a, b, n)
C and C++ sghmq | dghmq (subf, a, b, n);
PL/I SGHMQ | DGHMQ (subf, a, b, n);

On Entry

subf
is the user-supplied subroutine that evaluates the integrand function. The subroutine should be defined with three arguments: t, y, and n. For details, see Programming Considerations for the SUBF Subroutine.

Specified as: subf must be declared as an external subroutine in your application program. It can be whatever name you choose.

a
is the centering constant a for the exponential. Specified as: a number of the data type indicated in Table 166.

b
is the scaling constant b for the exponential. Specified as: a number of the data type indicated in Table 166; b > 0.

n
is the order of the quadrature method to be used. Specified as: a fullword integer; n = 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 20, 24, 32, 40, 48, 64, or 96.

On Return

Function value
 

is the approximation of the integral. Returned as: a number of the data type indicated in Table 166.

Notes
  1. Declare the DGHMQ function in your program as returning a long-precision real number. Declare the SGHMQ function, if necessary, as returning a short-precision real number.
  2. The subroutine specified for subf must be declared as external in your program. Also, data types used by subf must agree with the data types specified by this ESSL subroutine. The variable x, described under Function, and the argument n correspond to the subf arguments t and n, respectively. For details on how to set up the subroutine, see Programming Considerations for the SUBF Subroutine.

Function

The integral is approximated for a real valued function over the entire real line, using the Gauss-Hermite Quadrature method of specified order. The region of integration is from -infinity to infinity. The method of order n is theoretically exact for integrals of the following form, where f is a polynomial of degree less than 2n:



Integral Graphic

The method of order n is a good approximation when your integrand is closely approximated by a function of the following form, where f is a polynomial of degree less than 2n:



Integral Graphic

See references [26] and [92]. The result is returned as the function value to a Fortran, C, C++, or PL/I program.

Error Conditions

Computational Errors

None

Input-Argument Errors
  1. b <= 0
  2. n is not an allowable value, as listed in the syntax for this argument.

Example

This example shows how to compute the integral of the function f given by:



Integral Graphic

over the interval (-infinity, infinity), using the Gauss-Hermite method with 4 points:



Integral Graphic

The user-supplied subroutine FUN1, which evaluates the integrand function, is coded in Fortran as follows:

   SUBROUTINE FUN1 (T,Y,N)
   INTEGER*4 N
   REAL*4 T(*),Y(*)
   DO 1 I=1,N
1     Y(I)=T(I)**2*EXP(-2.0*(T(I)+5.0)**2)
   RETURN
   END

Program Statements and Input
EXTERNAL FUN1
        .
        .
        .
              SUBF     A     B    N
               |       |     |    |
XINT = SGHMQ( FUN1 , -5.0 , 2.0 , 4 )
        .
        .
        .

FUN1 =(see above)

Output
XINT     =  31.646


[ Top of Page | Previous Page | Next Page | Table of Contents | Index ]