MtxIntDiff.Romberg Method

function Romberg(Fun: TRealFunction; lb: Double; ub: Double; const FloatPrecision: TMtxFloatPrecision; const Constants: TVec; const ObjConst: TObjectArray; out StopReason: TIntStopReason; Tolerance: Double; MaxIter: Integer): Double;

Numerical integration by using recursive Romberg algorithm.

#NameDescription
1FunIntegrating function.
2ConstantsAdditional constants defining Fun function, usually nil/null.
3ObjConstAdditional objects defining Fun function, usually nil/null.
4lbDefines lower bound.
5ubDefines upper bound.
6StopReasonReturns algorithm stop reason.
7ToleranceDefines integration tolerance.
8MaxIterDefines maximum number of alorithm iterations.
9FloatPrecisionDefines the computational precision to be used by the routine.

Returns: Double - the numerical approximate on integral of function Fun between limits lb and ub.

Examples
Uses Math387, MtxIntDiff;

// Integrating function
function IntFunc(const Parameters: TVec; const Constants: TVec; const ObjConst: Array of TObject): double;
var x: double;
begin
    x := Parameters[0];
    IntFunc := Sin(x)*Exp(-x*x);
end;
// Integrate
procedure DoIntegrate;
var area: double;
sr: TIntStopReason;
begin
    area := Romberg(IntFunc,0,0.5*PI,sr);
end;
See Also: MtxIntDiff.QuadGauss