Basis

Tensor Product Bases of Bounded Total Degree

Abstract Base Class

class psdr.PolynomialTensorBasis(degree, X=None, dim=None)[source]

Generic tensor product basis of fixed total degree

This class constructs a tensor product basis of dimension \(n\) of fixed given degree \(p\) given a basis for polynomials in one variable. Namely, this basis is composed of elements:

\[\psi_j(\mathbf x) := \prod_{i=1}^n \phi_{[\boldsymbol \alpha_j]_i}(x_i) \quad \sum_{i=1}^n [\boldsymbol \alpha_j]_i \le p; \quad \phi_i \in \mathcal{P}_{i}(\mathbb{R})\]
Parameters:
  • dim (int) – The input dimension of the space
  • degree (int) – The total degree of polynomials
  • polyvander (function) – Function providing the scalar Vandermonde matrix (i.e., numpy.polynomial.polynomial.polyvander)
  • polyder (function) – Function providing the derivatives of scalar polynomials (i.e., numpy.polynomial.polynomial.polyder)
DDV(X)[source]

Column-wise second derivative of the Vandermonde matrix

Given points \(\mathbf x_i \in \mathbb{R}^n\), this creates the Vandermonde-like matrix whose entries correspond to the derivatives of each of basis elements; i.e.,

\[[\mathbf{V}]_{i,j} = \left. \frac{\partial^2}{\partial x_k\partial x_\ell} \psi_j(\mathbf{x}) \right|_{\mathbf{x} = \mathbf{x}_i}.\]
Parameters:X (array-like (M, n)) – Points at which to evaluate the basis at where X[i] is one such point in \(\mathbf{R}^m\).
Returns:Vpp – Second derivative of Vandermonde matrix where Vpp[i,j,:,:] is the Hessian of V[i,j].
Return type:np.array (M, N, n, n)
DV(X)[source]

Column-wise derivative of the Vandermonde matrix

Given points \(\mathbf x_i \in \mathbb{R}^n\), this creates the Vandermonde-like matrix whose entries correspond to the derivatives of each of basis elements; i.e.,

\[[\mathbf{V}]_{i,j} = \left. \frac{\partial}{\partial x_k} \psi_j(\mathbf{x}) \right|_{\mathbf{x} = \mathbf{x}_i}.\]
Parameters:X (array-like (M, n)) – Points at which to evaluate the basis at where X[i] is one such point in \(\mathbf{R}^n\).
Returns:Vp – Derivative of Vandermonde matrix where Vp[i,j,:] is the gradient of V[i,j].
Return type:np.array (M, N, n)
V(X=None)[source]

Builds the Vandermonde matrix associated with this basis

Given points \(\mathbf x_i \in \mathbb{R}^n\), this creates the Vandermonde matrix

\[[\mathbf{V}]_{i,j} = \phi_j(\mathbf x_i)\]

where \(\phi_j\) is a multivariate polynomial as defined in the class definition.

Parameters:X (array-like (M, n)) – Points at which to evaluate the basis at where X[i] is one such point in \(\mathbf{R}^n\).
Returns:V – Vandermonde matrix
Return type:np.array
VC(X, c)[source]

Evaluate the product of the Vandermonde matrix and a vector

This evaluates the product \(\mathbf{V}\mathbf{c}\) where \(\mathbf{V}\) is the Vandermonde matrix defined in V. This is done without explicitly constructing the Vandermonde matrix to save memory.

Parameters:
  • X (array-like (M,n)) – Points at which to evaluate the basis at where X[i] is one such point in \(\mathbf{R}^n\).
  • c (array-like) – The vector to take the inner product with.
Returns:

Vc – Product of Vandermonde matrix and \(\mathbf c\)

Return type:

np.array (M,)

set_scale(X)[source]

Construct an affine transformation of the domain to improve the conditioning

Specific Bases

class psdr.MonomialTensorBasis(*args, **kwargs)[source]

A tensor product basis of bounded total degree built from the monomials

class psdr.LegendreTensorBasis(*args, **kwargs)[source]

A tensor product basis of bounded total degree built from the Legendre polynomials

class psdr.ChebyshevTensorBasis(*args, **kwargs)[source]

A tensor product basis of bounded total degree built from the Chebyshev polynomials

class psdr.LaguerreTensorBasis(*args, **kwargs)[source]

A tensor product basis of bounded total degree built from the Laguerre polynomials

class psdr.HermiteTensorBasis(*args, **kwargs)[source]

A tensor product basis of bounded total degree built from the Hermite polynomials