summaryrefslogtreecommitdiff
path: root/langevin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'langevin.cpp')
-rw-r--r--langevin.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/langevin.cpp b/langevin.cpp
index adb5212..a775774 100644
--- a/langevin.cpp
+++ b/langevin.cpp
@@ -5,6 +5,7 @@
#include <list>
#include "Eigen/src/Eigenvalues/ComplexEigenSolver.h"
+#include "Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h"
#include "complex_normal.hpp"
#include "p-spin.hpp"
#include "dynamics.hpp"
@@ -139,6 +140,16 @@ int main(int argc, char* argv[]) {
Rng r;
+ Tensor<Real, p> ReJ = generateCouplings<Real, p>(N, std::normal_distribution<Real>(0, σ), r.engine());
+
+ std::normal_distribution<Real> Red(0, 1);
+
+ Vector<Real> zMin = randomMinimum(ReJ, Red, r, ε);
+ auto [Hr, dHr, ddHr] = hamGradHess(ReJ, zMin);
+ Eigen::EigenSolver<Matrix<Real>> eigenS(ddHr - ((ddHr * zMin) * zMin.transpose()) / (Real)zMin.size());
+ std::cout << eigenS.eigenvalues().transpose() << std::endl;
+ getchar();
+
complex_normal_distribution<Real> d(0, 1, 0);
ComplexTensor J = generateCouplings<Complex, p>(N, complex_normal_distribution<Real>(0, σ, κ), r.engine());
@@ -161,6 +172,7 @@ int main(int argc, char* argv[]) {
zSaddleNext = findSaddle(J, z0, ε);
Real saddleDistance = (zSaddleNext - zSaddle).norm();
if (saddleDistance / N > 1e-2) {
+ std::cout << saddleDistance << std::endl;
foundSaddle = true;
}
} catch (std::exception& e) {}
@@ -222,7 +234,7 @@ int main(int argc, char* argv[]) {
*/
Cord test(J, zSaddle, zSaddleNext, 5);
- test.relaxNewton(J, 20, 1, 1e4);
+ test.relaxNewton(J, 25, 1, 1e4);
std::cout << test.z0.transpose() << std::endl;
std::cout << test.z1.transpose() << std::endl;