diff options
Diffstat (limited to 'dynamics.hpp')
-rw-r--r-- | dynamics.hpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/dynamics.hpp b/dynamics.hpp index 10b1be2..561714e 100644 --- a/dynamics.hpp +++ b/dynamics.hpp @@ -113,3 +113,20 @@ std::tuple<Real, Vector<Scalar>> metropolis(const Tensor<Scalar, p>& J, const Ve return {E, z}; } + +template <class Real, class Scalar, int p, class Distribution, class Generator> +Vector<Scalar> randomSaddle(const Tensor<Scalar, p>& J, Distribution d, Generator& r, Real ε) { + Vector<Scalar> zSaddle; + bool foundSaddle = false; + + while (!foundSaddle) { + Vector<Scalar> z0 = normalize(randomVector<Scalar>(J.dimension(0), d, r.engine())); + + try { + zSaddle = findSaddle(J, z0, ε); + foundSaddle = true; + } catch (std::exception& e) {} + } + + return zSaddle; +} |