Interpolation

UQpy offers the capability to interpolate points on the Grassmann \(\mathcal{G}(p,n)\). Consider we have a set of \(n+1\) points \((t_0, \mathbf{X}_0), ..., (t_n, \mathbf{X}_n)\), with \(t_0 <...<t_n\) and \(\mathbf{X}_k \in \mathbb{R}^{p \times n}\), and we want to find a function \(p(x)\) for which \(p(t_k)=\mathbf{X}_k\) for \(k=0,..,n\) where \(x\) is a continuous independent variable and \(t_k\) are called the nodes (or coordinates) of the interpolant. However, since the Grassmann manifold has a nonlinear structure, interpolation can only be performed on the tangent space, which is a flat inner-product space. Therefore the following steps are required to interpolate on \(\mathcal{G}(p,n)\):

  1. Calculate the Karcher mean of the given points on the manifold.

  2. Project all points onto the tangent space with origin at the Karcher mean.

  3. Perform the interpolation on the tangent space using the available methods.

  4. Map the interpolated point back onto the manifold.

The GrassmannInterpolation class provides a framework to perform these steps. To use this class we need to import it as follows:

>>> from UQpy.dimension_reduction.grassmann_manifold.GrassmannInterpolation import GrassmannInterpolation

We must then instantiate a GrassmannInterpolation object and then invoke the interpolate_manifold() method as:

>>> X = GrassmannInterpolation()
>>> Y = X.interpolate_manifold(point)

Methods

class GrassmannInterpolation(interpolation_method, manifold_data, coordinates, distance, optimization_method='GradientDescent')[source]

A class to perform interpolation of points on the Grassmann manifold.

Parameters:
interpolate_manifold(point)[source]
Parameters:

point (ndarray) – Point at which to interpolate.

Returns:

Interpolated point on the Grassmann manifold.