imate.sample_matrices.toeplitz_schatten#

imate.sample_matrices.toeplitz_schatten(a, b, size, p=2)#

Compute the Schatten norm of Toeplitz matrix using an analytic formula.

The Toeplitz matrix using the entries \(a\) and \(b\) refers to the matrix generated by imate.toeplitz().

Parameters:
afloat

The diagonal elements of the Toeplitz matrix.

bfloat

The upper off-diagonal elements of the Toeplitz matrix.

sizeint, default=20

Size of the square matrix.

pfloat, default=2

The order \(p\) of Schatten \(p\)-norm.

Returns:
logdetfloat

Natural logarithm of the determinant of Toeplitz matrix

Notes

The Schatten \(p\)-norm of matrix \(\mathbf{A}\) is defined as

(1)#\[\begin{split}\Vert \mathbf{A} \Vert_p = \begin{cases} \left| \mathrm{det}(\mathbf{A}) \right|^{\frac{1}{n}}, & p=0, \\ \left| \frac{1}{n} \mathrm{trace}(\mathbf{A}^{p}) \right|^{\frac{1}{p}}, & p \neq 0, \end{cases}\end{split}\]

where \(n\) is the size of the matrix. When \(p \geq 0\), the above definition is the Schatten norm, and when \(p < 0\), the above is the Schatten anti-norm.

Note

Conventionally, the Schatten norm is defined without the normalizing factor \(\frac{1}{n}\) in (1). However, this factor is justified by the continuity granted by

\[\lim_{p \to 0} \Vert \mathbf{A} \Vert_p = \Vert \mathbf{A} \Vert_0.\]

For the matrix \(\mathbf{A}\) given in imate.toeplitz(), the Schatten norm (or anti-norm) is

\[\Vert \mathbf{A} \Vert_p = a.\]

Examples

>>> from imate.sample_matrices import toeplitz_schatten
>>> a, b = 2, 3

>>> # Schatten 2-norm
>>> toeplitz_schatten(a, b, size=6)
2.0