Loading...
Searching...
No Matches
Linear_transformation.h
/* This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT.
* See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details.
* Author(s): Siargey Kachanovich
*
* Copyright (C) 2019 Inria
*
* Modification(s):
* - YYYY/MM Author: Description of the modification
*/
#ifndef FUNCTIONS_LINEAR_TRANSFORMATION_H_
#define FUNCTIONS_LINEAR_TRANSFORMATION_H_
#include <cstdlib> // for std::size_t
#include <Eigen/Dense>
namespace Gudhi {
namespace coxeter_triangulation {
template <class Function_>
struct Linear_transformation {
Eigen::VectorXd operator()(const Eigen::VectorXd& p) const {
Eigen::VectorXd result = fun_(matrix_.householderQr().solve(p));
return result;
}
std::size_t amb_d() const { return fun_.amb_d(); }
std::size_t cod_d() const { return fun_.cod_d(); }
Eigen::VectorXd seed() const {
Eigen::VectorXd result = fun_.seed();
result = matrix_ * result;
return result;
}
Linear_transformation(const Function_& function, const Eigen::MatrixXd& matrix) : fun_(function), matrix_(matrix) {}
private:
Function_ fun_;
Eigen::MatrixXd matrix_;
};
template <class Function_>
Linear_transformation<Function_> make_linear_transformation(const Function_& function, const Eigen::MatrixXd& matrix) {
return Linear_transformation<Function_>(function, matrix);
}
} // namespace coxeter_triangulation
} // namespace Gudhi
#endif
Gudhi::coxeter_triangulation::make_linear_transformation
Linear_transformation< Function_ > make_linear_transformation(const Function_ &function, const Eigen::MatrixXd &matrix)
Static constructor of a linearly transformed function.
Definition Linear_transformation.h:80
Gudhi
Gudhi namespace.
Definition SimplicialComplexForAlpha.h:14
Gudhi::coxeter_triangulation::Linear_transformation
Transforms the zero-set of the function by a given linear transformation. The underlying function cor...
Definition Linear_transformation.h:30
Gudhi::coxeter_triangulation::Linear_transformation::seed
Eigen::VectorXd seed() const
Returns a point on the zero-set.
Definition Linear_transformation.h:47
Gudhi::coxeter_triangulation::Linear_transformation::operator()
Eigen::VectorXd operator()(const Eigen::VectorXd &p) const
Value of the function at a specified point.
Definition Linear_transformation.h:35
Gudhi::coxeter_triangulation::Linear_transformation::amb_d
std::size_t amb_d() const
Returns the domain (ambient) dimension.
Definition Linear_transformation.h:41
Gudhi::coxeter_triangulation::Linear_transformation::cod_d
std::size_t cod_d() const
Returns the codomain dimension.
Definition Linear_transformation.h:44
Gudhi::coxeter_triangulation::Linear_transformation::Linear_transformation
Linear_transformation(const Function_ &function, const Eigen::MatrixXd &matrix)
Constructor of a linearly transformed function.
Definition Linear_transformation.h:60