XLPack 6.1
Excel VBA Numerical Library Reference Manual
Loading...
Searching...
No Matches

◆ Deiint()

Sub Deiint ( F As  LongPtr,
Result As  Double,
Info As  Long,
Optional Neval As  Long,
Optional Eps As  Double = -1 
)

Infinite interval automatic quadrature (double exponential (DE) formula)

Purpose
This routine computes the integral of f(x) over [-∞, +∞], satisfying the requested accuracy, where f(x) is a given function defined by a user supplied subroutine f.
The result is obtained by the automatic integration applying the double exponential (DE) formula.

The double exponential (DE) formulas (see Defin) for infinite interval [-∞, +∞] is obtained by using the following transformation function.
φ(t) = sinh((π/2)sinh(t))
This formula is suitable for the slowly decaying functions.
Parameters
[in]FThe user supplied subroutine which calculates the integrand function f(x) defined as follows.
Function F(X As Double) As Double
F = f(X)
End Function
X should not be changed.
[out]ResultApproximation to the integral.
[out]Info= 0: Successful exit.
= 1: Slow decay on negative side.
= 2: Slow decay on positive side.
= 3: Both of above.
= 4: Insufficient mesh refinement. (Eps too small, singularity within integral interval, etc.)
[out]Neval(Optional)
Number of integrand evaluations.
[in]Eps(Optional)
Absolute accuracy requested. (default = 1.0e-14)
(If Eps <= 0, the default value will be used)
Reference
(Japanese book) Masatake Mori "FORTRAN77 Numerical Calculation Programming (augmented edition)" Iwanami Shoten (1987)
Example Program
Compute the following integral.
∫ 1/(1 + x^2) dx [-∞, +∞] (= π)
Function F1(X As Double) As Double
F1 = 1 / (1 + X ^ 2)
End Function
Sub Ex_Deiint()
Dim Result As Double, Info As Long
Call Deiint(AddressOf F1, Result, Info)
Debug.Print "S =", Result, "S(true) =", Dconst(13)
Debug.Print "Info =", Info
End Sub
Function Dconst(I As Long) As Double
Numerical quantities
Sub Deiint(F As LongPtr, Result As Double, Info As Long, Optional Neval As Long, Optional Eps As Double=-1)
Infinite interval automatic quadrature (double exponential (DE) formula)
Example Results
S = 3.14159265358979 S(true) = 3.14159265358979
Info = 0