SPECRAD
Updated 2023-10-17 14:45:00.380000
Syntax
SELECT [westclintech].[wct].[MRANK](
<@MatrixQuery, nvarchar(max),>
,<@IS3N, bit,>)
Description
Use the scalar function SPECRAD to calculate the spectral radius of a square matrix. The spectral radius of the square matrix is the eigenvalue with the greatest absolute value.
Arguments
@MatrixQuery
the SELECT statement, as text, used to return the input matrix for this function. The SELECT statement specifies the column names from the table or view or can be used to enter the matrix values directly. Data returned from the @MatrixQuery select must be of the type float or of a type that implicitly converts to float.
@Is3N
a bit value identifying the form for the resultant table returned by @MatrixQuery. Enter 'True' for a resultant table in 3 rd normal form. Enter 'False' for a de-normalized table in 'spreadsheet' form.
Return Type
float
Remarks
If @MatrixQuery does not return a square matrix then NULL is returned.
Examples
Example #1
In the example we calculate the spectral radius of a matrix in 'spreadsheet' format; i.e. in row/column format.
SELECT wct.SPECRAD(
'
SELECT *
FROM (VALUES
(1,1,1,1,1)
,(1,2,4,8,16)
,(1,3,9,27,81)
,(1,4,16,64,256)
,(1,5,25,125,625)
)n(x1,x2,x3,x4,x5)',
0
) as [Spectral Radius];
This produces the following result.
{"columns":[{"field":"Spectral Radius","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Spectral Radius":"680.926658309705"}]}
Example #2
Using the same matrix content as Example #1 but with the data in 3rd normal form.
SELECT wct.SPECRAD(
'SELECT *
FROM (VALUES
(0,0,1)
,(0,1,1)
,(0,2,1)
,(0,3,1)
,(0,4,1)
,(1,0,1)
,(1,1,2)
,(1,2,4)
,(1,3,8)
,(1,4,16)
,(2,0,1)
,(2,1,3)
,(2,2,9)
,(2,3,27)
,(2,4,81)
,(3,0,1)
,(3,1,4)
,(3,2,16)
,(3,3,64)
,(3,4,256)
,(4,0,1)
,(4,1,5)
,(4,2,25)
,(4,3,125)
,(4,4,625)
)n(r,c,x)',
1
) as [Spectral Radius];
This produces the following result.
{"columns":[{"field":"Spectral Radius","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Spectral Radius":"680.926658309705"}]}
Example #3
With the matrix in CSV format, with the columns separated by commas and the rows separated by semi-colons.
SELECT wct.SPECRAD('1,1,1,1,1;1,2,4,8,16;1,3,9,27,81;1,4,16,64,256;1,5,25,125,625',
0) as [Spectral Radius];
This produces the following result.
{"columns":[{"field":"Spectral Radius","headerClass":"ag-right-aligned-header","cellClass":"ag-right-aligned-cell"}],"rows":[{"Spectral Radius":"680.926658309705"}]}
See Also
SVD - Economy-sized singular value decomposition using a formatted matrix as input