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)\):
Calculate the Karcher mean of the given points on the manifold.
Project all points onto the tangent space with origin at the Karcher mean.
Perform the interpolation on the tangent space using the available methods.
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:
interpolation_method (
Union
[Surrogate
,callable
,None
]) – Type of interpolation to perform. This may be specified as aSurrogate
object or a callable function. IfNone
, then multi-linear interpolation is performed.manifold_data (
list
[GrassmannPoint
]) – Data points on the Grassmann manifold.coordinates (
Union
[ndarray
,list
[ndarray
]]) – Nodes of the interpolant.distance (
GrassmannianDistance
) – Distance measure.optimization_method (
str
) – Optimization method for calculating the Karcher mean. SeeGrassmannOperations.karcher_mean()
.