SECANT
Updated 2023-10-18 21:03:29.767000
Syntax
SELECT [westclintech].[wct].[SECANT] (
<@Func, nvarchar(max),>
,<@VarName, nvarchar(4000),>
,<@A, float,>
,<@B, float,>
,<@MaxIter, int,>
,<@tol, float,>)
Description
Use the scalar function SECANT to find the root of a univariate function.
Arguments
@tol
Absolute tolerance.
@A
One of the 2 starting values.
@B
Another starting value.
@VarName
The name of the variable.
@MaxIter
Maximum number of iterations.
@Func
The function to be evaluated, as a string. The function must be in the form of a SELECT statement.
Return Type
float
Remarks
If Func returns a NULL then NULL is returned.
If Func is not a valid SELECT statement then NULL is returned.
If no solution is found then NULL is returned.
The solution must be bound by A and B.
If A is NULL then A = 0.
If B is NULL then B = 0.
If MaxIter is NULL then MaxIter = 100.
If tol is NULL then tol = 0.
If tol <= 0 then tol = 0.0000000149011612.
Examples
Example #1
Let’s find the root of the Legendre polynomial of degree 5.
SELECT wct.SECANT('SELECT (63 * POWER(@x,5) - 70 * POWER(@x,3) + 15 * @x)/8e+00',
'@x', 0.9, 1.0, NULL, NULL) as SECANT;
This produces the following result.
{"columns":[{"field":"SECANT","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"SECANT":"0.906179845936973"}]}
Example #2In this example we call the PRICE function to calculate the yield on a bond using the SECANT function and compare that with value returned by the YIELD function.
SELECT wct.SECANT(
'SELECT wct.PRICE(
''2018-04-25''
,''2025-05-15''
,.04
,@Y
,100
,2
,0) - 98.25',
'@Y',
.04,
.12,
NULL,
1E-08
) as secant,
wct.YIELD('2018-04-25', '2025-05-15', .04, 98.25, 100, 2, 0) as yield;
This produces the following result.
{"columns":[{"field":"secant","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"},{"field":"yield","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"secant":"0.0428973950775433","yield":"0.0428973950748617"}]}
See Also
HESSIAN - Numerically computer the Hessian matrix
JACOBIAN - Numerically compute the Jacobian matrix
NEWTON - Find the root of a univariate function
BRENT - Find the root of a continuous function of on variable