FILTLAN  1.0a
Static Public Member Functions | Static Public Attributes | Static Private Attributes | List of all members
PolynomialFilterInterface Class Reference

An interface to define R(S), i.e. set R and S, and compute R(S)*v, where R is the residual polynomial, S is a sparse matrix, and v is a vector. More...

#include <polyfilt.h>

Static Public Member Functions

static Vector setFilter (const SparseMatrix &S0, const Vector &frame, mkIndex polyDeg, mkIndex baseDeg, IntervalOptions &opts)
 This member function sets the sparse matrix S translated from S0, and also the base filter P(z). More...
 
static Vector filteredSparseMatrixPolynomialVectorProduct (const Vector &v)
 This routine computes R(S)*v, where it is assumed that S and R(S) have been defined by setFilter(). More...
 

Static Public Attributes

static PolynomialFilterInfo filterInfo
 The information of computing the polynomial filter. See class PolynomialFilterInfo in polyfilt.h for more information.
 

Static Private Attributes

static const SparseMatrix * Sptr
 A pointer to the input sparse symmetric matrix via setFilter().
 
static SparseMatrix S
 The sparse symmetric matrix S in computing R(S)*v; S is translated from the input sparse symmetric matrix S0 in setFilter().
 
static Vector intervals
 The jth interval is [intervals(j),intervals(j+1)). More...
 
static Vector intervalWeights
 intervalWeights(j) is the weight of jth interval [intervals(j),intervals(j+1)).
 
static mkIndex polyDegree
 Maximum possible degree of s(z), with z*s(z) the polynomial filter.
 
static mkIndex baseDegree
 Left-and-right degree of the base filter in each interval.
 
static Matrix baseFilter
 A base filter, which is a piecewise polynomial typically from Hermite interpolation. More...
 
static Vector zn
 A zero vector of length the number of rows/columns of S.
 

Detailed Description

An interface to define R(S), i.e. set R and S, and compute R(S)*v, where R is the residual polynomial, S is a sparse matrix, and v is a vector.

In short, use setFilter() to define R(S) once, and use filteredSparseMatrixPolynomialVectorProduct() to compute R(S)*v for every v.

Member Function Documentation

◆ filteredSparseMatrixPolynomialVectorProduct()

static Vector PolynomialFilterInterface::filteredSparseMatrixPolynomialVectorProduct ( const Vector &  v)
inlinestatic

This routine computes R(S)*v, where it is assumed that S and R(S) have been defined by setFilter().

Remarks
R(z) is in the form z*s(z) which minimizes ||(1-P(z))-z*s(z)||w by a conjugate-residual-type algorithm, where P(z) is a piecewise polynomial as the base filter, and s(z) is a polynomial of degree up to PolynomialFilterInterface::polyDegree, and w-norm is defined by data members PolynomialFilterInterface::intervals and PolynomialFilterInterface::intervalWeights.
P(z) is defined by the data members PolynomialFilterInterface::baseFilter and PolynomialFilterInterface::intervals. It is expanded in the ‘translated’ (scale-and-shift) Chebyshev basis for each interval, and presented as a matrix of Chebyshev coefficients PolynomialFilterInterface::baseFilter.
See also
FilteredConjugateResidualMatrixPolynomialVectorProduct().

◆ setFilter()

static Vector PolynomialFilterInterface::setFilter ( const SparseMatrix &  S0,
const Vector &  frame,
mkIndex  polyDeg,
mkIndex  baseDeg,
IntervalOptions opts 
)
static

This member function sets the sparse matrix S translated from S0, and also the base filter P(z).

Parameters
S0is the sparse symmetric matrix of concern.
frameis a vector of 4 ordered elements.
[frame(1),frame(4)] is the interval which (tightly) contains all eigenvalues of S0, and [frame(2),frame(3)] is the interval in which the eigenvalues of S0 are sought.
polyDegis the (maximum possible) degree of s(z), with z*s(z) the polynomial filter.
baseDegis the left-and-right degree of the base filter for each interval.
optsis a collection of options to determine the intervals.
See also
GetIntervals().

Member Data Documentation

◆ baseFilter

Matrix PolynomialFilterInterface::baseFilter
staticprivate

A base filter, which is a piecewise polynomial typically from Hermite interpolation.

For jth interval, the polynomial is expanded in the ‘translated’ (scale-and-shift) Chebyshev basis, with the Chebyshev coefficients stored in baseFilter(:,j).

◆ intervals

Vector PolynomialFilterInterface::intervals
staticprivate

The jth interval is [intervals(j),intervals(j+1)).

The intervals are decided by GetIntervals() invoked by setFilter() which takes parameters frame, baseDeg, and polyDeg:

  • frame is a vector consisting of 4 ordered elements: [frame(1),frame(4)] is the interval which (tightly) contains all eigenvalues of S, and [frame(2),frame(3)] is the interval in which the eigenvalues are sought.
  • baseDeg is the left-and-right degree of the base filter for each interval.
  • polyDeg is the (maximum possible) degree of s(z), with z*s(z) the polynomial filter.

The documentation for this class was generated from the following file: