XLPack 7.0
XLPack Numerical Library (Excel VBA) Reference Manual
Loading...
Searching...
No Matches

◆ Qags_r()

Sub Qags_r ( A As  Double,
B As  Double,
Result As  Double,
Info As  Long,
XX As  Double,
YY As  Double,
IRev As  Long,
Optional AbsErr As  Double,
Optional Neval As  Long,
Optional EpsAbs As  Double = -1,
Optional EpsRel As  Double = -1,
Optional Limit As  Long = -1,
Optional Last As  Long 
)

Finite interval adaptive quadrature with sigularities (21 point Gauss-Kronrod rule) (reverse communication version)

Purpose
This routine computes I = integral of f over [a, b], satisfying the requested accuracy, where f is a given function with singularities. User should provide the necessary computed values of f according to the argument IRev.
21 point Gauss-Kronrod rule is used, and the integration interval will be adaptively subdivided to satisfy the requested accuracy in connection with extrapolation, which will eliminate the effects of integrand singularities of several types.
Parameters
[in]ALower limit of integration a.
[in]BUpper limit of integration b.
[out]ResultApproximation to the integral.
[out]Info= 0: Successful exit.
= -7: The argument IRev had an illegal value.
= 1: Maximum number of subdivisions allowed has been reached.
= 2: Requested tolerance cannot be achieved due to roundoff error.
= 3: Bad integrand behavior found in the integration interval.
= 4: Algorithm does not converge due to the roundoff error in the extrapolation table.
= 5: The integral is probably divergent, or slowly convergent.
[out]XXWhen returned with IRev = 1, XX contains the abscissa where the function value should be evaluated and given in the next call.
[in]YYWhen returned with IRev = 1, the function value should be given in YY in the next call.
[in,out]IRevControl variable for reverse communication.
[in] Before first call, IRev should be initialized to zero. On succeeding calls, IRev should not be altered.
[out] If IRev is not zero, complete the following tasks and call this routine again without changing IRev.
= 0: Computation finished. See return code in Info.
= 1: User should set the function values at XX in YY. Do not alter any variables other than YY.
[out]AbsErr(Optional)
Estimate of the modulus of the absolute error, which should equal or exceed the true error.
[out]Neval(Optional)
Number of integrand evaluations.
[in]EpsAbs(Optional)
Absolute accuracy requested. (default = 0)
The requested accuracy is assumed to be satisfied if AbsErr <= max(EpsAbs, EpsRel*|Result|))
[in]EpsRel(Optional)
Relative accuracy requested. (default = 1.0e-12)
The requested accuracy is assumed to be satisfied if AbsErr <= max(EpsAbs, EpsRel*|Result|))
If EpsAbs <= 0 and EpsRel < 50*eps, EpsRel is assumed to be 50*eps, where eps is the machine precision.
[in]Limit(Optional)
Maximum number of subintervals in the partition of the given integration interval [a, b] (limit >= 1) (default = 100)
[out]Last(Optional)
Number of subintervals produced in the subdivision process.
Reference
SLATEC (QUADPACK)
Example Program
Compute the following integral.
∫ 1/(1 + x^2) dx [0, 4] (= atan(4))
Sub Ex_Qags_r()
Dim A As Double, B As Double, Result As Double, Info As Long
Dim XX As Double, YY As Double, IRev As Long
A = 0: B = 4
IRev = 0
Do
Call Qags_r(A, B, Result, Info, XX, YY, IRev)
If IRev = 1 Then YY = 1 / (1 + XX ^ 2)
Loop While IRev <> 0
Debug.Print "S =", Result, "S(true) =", Atn(4)
Debug.Print "Info =", Info
End Sub
Sub Qags_r(A As Double, B As Double, Result As Double, Info As Long, XX As Double, YY As Double, IRev As Long, Optional AbsErr As Double, Optional Neval As Long, Optional EpsAbs As Double=-1, Optional EpsRel As Double=-1, Optional Limit As Long=-1, Optional Last As Long)
Finite interval adaptive quadrature with sigularities (21 point Gauss-Kronrod rule) (reverse communic...
Example Results
S = 1.32581766366803 S(true) = 1.32581766366803
Info = 0