Rename and small fix.
parent
df73414b1c
commit
491405a5f1
|
@ -643,19 +643,18 @@ bool ShonanAveraging<d>::checkOptimality(const Values &values) const {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
/// Create a VectorValues with eigenvector v
|
|
||||||
template <size_t d>
|
template <size_t d>
|
||||||
VectorValues ShonanAveraging<d>::MakeATangentVectorValues(size_t p,
|
VectorValues ShonanAveraging<d>::TangentVectorValues(size_t p,
|
||||||
const Vector &v) {
|
const Vector &v) {
|
||||||
VectorValues delta;
|
VectorValues delta;
|
||||||
// Create a tangent direction xi with eigenvector segment v_i
|
// Create a tangent direction xi with eigenvector segment v_i
|
||||||
const size_t dimension = SOn::Dimension(p);
|
const size_t dimension = SOn::Dimension(p);
|
||||||
|
double sign0 = pow(-1.0, round((p + 1) / 2) + 1);
|
||||||
for (size_t i = 0; i < v.size() / d; i++) {
|
for (size_t i = 0; i < v.size() / d; i++) {
|
||||||
// Create a tangent direction xi with eigenvector segment v_i
|
|
||||||
// Assumes key is 0-based integer
|
// Assumes key is 0-based integer
|
||||||
const auto v_i = v.segment<d>(d * i);
|
const auto v_i = v.segment<d>(d * i);
|
||||||
Vector xi = Vector::Zero(dimension);
|
Vector xi = Vector::Zero(dimension);
|
||||||
double sign = pow(-1.0, round((p + 1) / 2) + 1);
|
double sign = sign0;
|
||||||
for (size_t j = 0; j < d; j++) {
|
for (size_t j = 0; j < d; j++) {
|
||||||
xi(j + p - d - 1) = sign * v_i(d - j - 1);
|
xi(j + p - d - 1) = sign * v_i(d - j - 1);
|
||||||
sign = -sign;
|
sign = -sign;
|
||||||
|
@ -696,7 +695,7 @@ template <size_t d>
|
||||||
Values ShonanAveraging<d>::LiftwithDescent(size_t p, const Values &values,
|
Values ShonanAveraging<d>::LiftwithDescent(size_t p, const Values &values,
|
||||||
const Vector &minEigenVector) {
|
const Vector &minEigenVector) {
|
||||||
Values lifted = LiftTo<SOn>(p, values);
|
Values lifted = LiftTo<SOn>(p, values);
|
||||||
VectorValues delta = MakeATangentVectorValues(p, minEigenVector);
|
VectorValues delta = TangentVectorValues(p, minEigenVector);
|
||||||
return lifted.retract(delta);
|
return lifted.retract(delta);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -202,7 +202,7 @@ public:
|
||||||
Values roundSolutionS(const Matrix &S) const;
|
Values roundSolutionS(const Matrix &S) const;
|
||||||
|
|
||||||
/// Create a VectorValues with eigenvector v_i
|
/// Create a VectorValues with eigenvector v_i
|
||||||
static VectorValues MakeATangentVectorValues(size_t p, const Vector &v);
|
static VectorValues TangentVectorValues(size_t p, const Vector &v);
|
||||||
|
|
||||||
/// Calculate the riemannian gradient of F(values) at values
|
/// Calculate the riemannian gradient of F(values) at values
|
||||||
Matrix riemannianGradient(size_t p, const Values &values) const;
|
Matrix riemannianGradient(size_t p, const Values &values) const;
|
||||||
|
|
Loading…
Reference in New Issue