gtsam 4.1.1
gtsam
gtsam::Chebyshev2 Class Reference

Detailed Description

Chebyshev Interpolation on Chebyshev points of the second kind Note that N here, the number of points, is one less than N from 'Approximation Theory and Approximation Practice by L.

N. Trefethen (pg.42)'.

+ Inheritance diagram for gtsam::Chebyshev2:

Static Public Member Functions

static double Point (size_t N, int j)
 Specific Chebyshev point.
 
static double Point (size_t N, int j, double a, double b)
 Specific Chebyshev point, within [a,b] interval.
 
static Vector Points (size_t N)
 All Chebyshev points.
 
static Vector Points (size_t N, double a, double b)
 All Chebyshev points, within [a,b] interval.
 
static Weights CalculateWeights (size_t N, double x, double a=-1, double b=1)
 Evaluate Chebyshev Weights on [-1,1] at any x up to order N-1 (N values) These weights implement barycentric interpolation at a specific x. More...
 
static Weights DerivativeWeights (size_t N, double x, double a=-1, double b=1)
 Evaluate derivative of barycentric weights. More...
 
static DiffMatrix DifferentiationMatrix (size_t N, double a=-1, double b=1)
 compute D = differentiation matrix, Trefethen00book p.53 when given a parameter vector f of function values at the Chebyshev points, D*f are the values of f'. More...
 
static Weights IntegrationWeights (size_t N, double a=-1, double b=1)
 Evaluate Clenshaw-Curtis integration weights. More...
 
template<size_t M>
static Matrix matrix (boost::function< Eigen::Matrix< double, M, 1 >(double)> f, size_t N, double a=-1, double b=1)
 Create matrix of values at Chebyshev points given vector-valued function.
 
- Static Public Member Functions inherited from gtsam::Basis< Chebyshev2 >
static Matrix WeightMatrix (size_t N, const Vector &X)
 Calculate weights for all x in vector X. More...
 
static Matrix WeightMatrix (size_t N, const Vector &X, double a, double b)
 Calculate weights for all x in vector X, with interval [a,b]. More...
 
static double Derivative (double x, const Vector &p, OptionalJacobian< -1, -1 > H=boost::none)
 

Public Types

using Base = Basis< Chebyshev2 >
 
using Parameters = Eigen::Matrix< double, -1, 1 >
 
using DiffMatrix = Eigen::Matrix< double, -1, -1 >
 

Member Function Documentation

◆ CalculateWeights()

Weights gtsam::Chebyshev2::CalculateWeights ( size_t  N,
double  x,
double  a = -1,
double  b = 1 
)
static

Evaluate Chebyshev Weights on [-1,1] at any x up to order N-1 (N values) These weights implement barycentric interpolation at a specific x.

More precisely, f(x) ~ [w0;...;wN] * [f0;...;fN], where the fj are the values of the function f at the Chebyshev points. As such, for a given x we obtain a linear map from parameter vectors f to interpolated values f(x). Optional [a,b] interval can be specified as well.

◆ DerivativeWeights()

Weights gtsam::Chebyshev2::DerivativeWeights ( size_t  N,
double  x,
double  a = -1,
double  b = 1 
)
static

Evaluate derivative of barycentric weights.

This is easy and efficient via the DifferentiationMatrix.

◆ DifferentiationMatrix()

Chebyshev2::DiffMatrix gtsam::Chebyshev2::DifferentiationMatrix ( size_t  N,
double  a = -1,
double  b = 1 
)
static

compute D = differentiation matrix, Trefethen00book p.53 when given a parameter vector f of function values at the Chebyshev points, D*f are the values of f'.

https://people.maths.ox.ac.uk/trefethen/8all.pdf Theorem 8.4

◆ IntegrationWeights()

Weights gtsam::Chebyshev2::IntegrationWeights ( size_t  N,
double  a = -1,
double  b = 1 
)
static

Evaluate Clenshaw-Curtis integration weights.

Trefethen00book, pg 128, clencurt.m Note that N in clencurt.m is 1 less than our N K = N-1; theta = pi*(0:K)'/K; w = zeros(1,N); ii = 2:K; v = ones(K-1, 1); if mod(K,2) == 0 w(1) = 1/(K^2-1); w(N) = w(1); for k=1:K/2-1, v = v-2*cos(2*k*theta(ii))/(4*k^2-1); end v = v - cos(K*theta(ii))/(K^2-1); else w(1) = 1/K^2; w(N) = w(1); for k=1:K/2, v = v-2*cos(2*k*theta(ii))/(4*k^2-1); end end w(ii) = 2*v/K;


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