approximation edit page

approximate an SO3FunHarmonic by given function values at given nodes w.r.t. some noise.

For \(M\) given orientations \(R_i\) and corresponding function values \(y_i\) we compute the SO3FunHarmonic \(f\) of an specific bandwidth which minimizes the least squares problem

\[\sum_{i=1}^M|f(R_i)-y_i|^2.\]

If the oversampling factor is small (high bandwidth) it may be necessary to assure decay of the harmonic coefficents. Therefore we regularize the least squares problem by the Sobolev norm of f, i.e we minimize

\[\sum_{i=1}^M|f(R_i)-y_i|^2 + \lambda \|f\|^2_{H^s}\]

where \(\lambda\) is the regularization parameter and \(s\) the Sobolev index. The Sobolev norm of an SO3FunHarmonic with harmonic coefficients \(\hat{f}\) reads as

\[\|f\|^2_{H^s} = \sum_{n=0}^N (2n+1)^{2s} \, \sum_{k,l=-n}^n|\hat{f}_n^{k,l}|^2.\]

Syntax

SO3F = SO3FunHarmonic.approximation(SO3Grid, f)
SO3F = SO3FunHarmonic.approximation(SO3Grid, f,'constantWeights')
SO3F = SO3FunHarmonic.approximation(SO3Grid, f, 'bandwidth', bandwidth, 'tol', TOL, 'maxit', MAXIT, 'weights', W)
SO3F = SO3FunHarmonic.approximation(SO3Grid, f, 'regularization')
SO3F = SO3FunHarmonic.approximation(SO3Grid, f, 'regularization',0.1,'SobolevIndex',1)

Input

SO3Grid rotational grid
f function values on the grid (maybe multidimensional)

Options

constantWeights uses constant normalized weights (for example if the nodes are constructed by equispacedSO3Grid)
weights weight w_n for the nodes (default: Voronoi weights)
bandwidth maximum degree of the Wigner-D functions used to approximate the function (Be careful by setting the bandwidth by yourself, since it may yields undersampling)
tol tolerance for lsqr
maxit maximum number of iterations for lsqr
regularization the energy functional of the lsqr solver is regularized by the Sobolev norm of SO3F (there is given a regularization constant)
SobolevIndex for regularization (default = 2)

See also

SO3Fun.interpolate SO3FunHarmonic.quadrature SO3VectorFieldHarmonic.approximation