Logo

QUAD

Updated 2024-03-07 14:43:39.067000

Syntax

SELECT [westclintech][wctMath].[wct].[QUAD](
  <@Func, nvarchar(max),>
 ,<@VarName, nvarchar(4000),>
 ,<@A, sql_variant,>
 ,<@B, sql_variant,>)

Description

Use the scalar function QUAD to evaluate an infinite integral. QUAD can be used to evaluate integrals in the regions -Infinity to a, a to Infinity, or -Infinity to Infinity, where -Infinity < a < Infinity. QUAD uses 15-point Gauss-Kronrod quadrature.

Arguments

@A

The lower limit of integration.

@B

The upper limit of integration.

@VarName

the TSQL variable name. The variable name must start with '@'. @VarName must be of a type nvarchar of a type which implicitly converts to nvarchar.

@Func

the function to be integrated. @Func is a string containing any valid TSQL statement which includes a single variable that is the object of the integration. The variable name is defined in @VarName. @Func is of a type nvarchar or of any type which implicitly converts to nvarchar.

Return Type

float

Remarks

If @A is not '-Inf' and @B is not 'Inf' then NULL will be returned.

If @A is '-Inf' then the function will be integrate from -8 to @B.

If @A is not '-Inf' then the function will be integrated from @A to 8.

@A can be any floating point number or '-Inf'.

@B can be any floating point number or 'Inf'.

If @Func contains an undeclared SQL variable and it is not defined in @VarName a NULL will be returned.

Examples

In this example we want to evaluate the integral:

\int_1^\infty\frac{e^{-x}}{x}
SELECT wct.QUAD(   'SELECT EXP(-@x)/@x', --@Func    

                   '@x',                 --@VarName

                   1,                    --@A

                   'Inf'                 --@B

               ) as Integral;

This produces the following result.

{"columns":[{"field":"Integral","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Integral":"0.21938393439552"}]}

In this example we want to evaluate the integral:

\int_{-\infty}^0\frac{\ln(1+x^2)}{x^2}
SELECT wct.QUAD(   'SELECT LOG(1+POWER(@x,2))/POWER(@x,2)', --@Func    

                   '@x',                                    --@VarName

                   '-Inf',                                  --@A

                   0                                        --@B

               ) as Integral;

This produces the following result.

{"columns":[{"field":"Integral","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Integral":"3.14159265358684"}]}

In this example we want to evaluate the integral:

\int_{-\infty}^\infty1-\sqrt{2}\frac{\cosh{x}}{\sqrt{\cosh{2x}}

Note that COSH, the hyperbolic cosine function, is not a built-in SQL Server function, but it is part of the XLeratorDB library.

SELECT
   wct.QUAD(
      'SELECT 1 - SQRT(2)*wct.COSH(@x)/SQRT(wct.COSH(2*@x))', --@Func  
      '@x',    --@VarName
      '-Inf', --@A
      'Inf'    --@B
      ) as Integral;

This produces the following result.

{"columns":[{"field":"Integral","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Integral":"-0.69314718056001"}]}

See Also

QUADDE - Double Exponential quadrature for non-periodic functions

QUADGK - Gauss-Kronrod 21-point quadrature

QUADOSC - Double exponential quadrature for periodic functions

QUADTS - Evaluate a finite integral.