File FixedEndsPenalizedLeastSquares.h

Copyright

This code is licensed under the 3-clause BSD license.

Copyright ETH Zurich, Laboratory for Physical Chemistry, Reiher Group.

See LICENSE.txt for details.

namespace Scine

This header file contains functions that allow for common notation for common things that can be done at a different degree of derivatives.

This header contains alias definitions defining which classes to use for the different degrees of derivatives.

namespace Utils
namespace BSplines
class FixedEndsPenalizedLeastSquares
#include <FixedEndsPenalizedLeastSquares.h>

Generate control points for a B-spline fitted from data points at given coordinates for a known knot vector.

See

FixedEndsPenalizedLeastSquaresGenerator, FixedEndsFixedKnotSplineGenerator

Public Functions

FixedEndsPenalizedLeastSquares(const Eigen::Ref<const Eigen::MatrixXd> &dataPoints, const Eigen::VectorXd &dataCoordinates, const Eigen::VectorXd &knotVector, int splineDegree, bool uniformKnotVector = false, double lambda = 0, int kappa = 2)
Eigen::MatrixXd calculateControlPoints()

Private Functions

Eigen::MatrixXd generateQVectors()

eq. (9.63) in the NURBS book

Eigen::MatrixXd calculateConstantTermsMatrix(const Eigen::MatrixXd &Q)

eq. (9.67) in the NURBS book

Eigen::MatrixXd calculateCoefficientMatrix()

eq. (9.66) in the NURBS book

Eigen::MatrixXd calculateFiniteDifferenceMatrix()
void initializeSolver(const Eigen::MatrixXd &Nmat)
Eigen::MatrixXd generateControlPointMatrix(const Eigen::MatrixXd &Qmat)

Private Members

const Eigen::Ref<const Eigen::MatrixXd> &dataPoints_
const Eigen::VectorXd &dataCoordinates_
const Eigen::VectorXd &knotVector_
int splineDegree_
bool uniformKnotVector_
double lambda_
int kappa_
int n_
int m_
int dim_
Eigen::JacobiSVD<Eigen::MatrixXd> svdOfNmat_