From b111948939dcb6a631d6dea9a698d4d16ba52d09 Mon Sep 17 00:00:00 2001 From: "Joshua Moerman (joshua-desktop)" Date: Mon, 13 Jun 2011 13:09:26 +0200 Subject: [PATCH] fixed a bugje, hardcoded 2 dim (todo: implementing projectors good), ikeda has more parameters --- Attractor.hpp | 1 + Projector.cpp | 3 ++- kernels/Ikeda3D.hpp | 11 +++++++---- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/Attractor.hpp b/Attractor.hpp index c530b7e..76cd16d 100644 --- a/Attractor.hpp +++ b/Attractor.hpp @@ -35,6 +35,7 @@ public: if(kernel->convergent() || kernel->divergent()){ kernel->generate_random_parameters(); LogDebug("Generating new parameters.\n"); + i = 0; } } } diff --git a/Projector.cpp b/Projector.cpp index 8d9c13e..fabfd74 100644 --- a/Projector.cpp +++ b/Projector.cpp @@ -4,7 +4,8 @@ #include "projectors/Normalizer.hpp" Projector* Projector::createProjector(stfu::node& projector, unsigned int input_dimension) { - Projector* output = new Normalizer(input_dimension); + //Projector* output = new Normalizer(input_dimension); + Projector* output = new Normalizer(2); return output; } diff --git a/kernels/Ikeda3D.hpp b/kernels/Ikeda3D.hpp index b0b7bcf..777f521 100644 --- a/kernels/Ikeda3D.hpp +++ b/kernels/Ikeda3D.hpp @@ -16,7 +16,7 @@ private: public: Ikeda3D(): - AttractorKernel(3, 1) { + AttractorKernel(3, 4) { init(); } @@ -24,16 +24,19 @@ public: virtual void generate_random_parameters() { parameters[0] = rand() / double(RAND_MAX) *2.0 - 0.5; + parameters[1] = rand() / double(RAND_MAX) *2.0 - 0.5; // wikipedia: u + parameters[2] = rand() / double(RAND_MAX) *2.0 - 0.5; + parameters[3] = rand() / double(RAND_MAX) *30.0; init(); } virtual void operator()() { std::swap(vectorNew, vectorOld); - vectorOld[2] = 0.4 - 6.0/(1 + vectorOld[0]*vectorOld[0] + vectorOld[1]*vectorNew[1]); + vectorOld[2] = parameters[2] - parameters[3]/(1 + vectorOld[0]*vectorOld[0] + vectorOld[1]*vectorNew[1]); - vectorNew[0] = 1 + parameters[0] * (vectorOld[0]*cos(vectorOld[2]) - vectorOld[1]*sin(vectorOld[2])); - vectorNew[0] = parameters[0] * (vectorOld[0]*sin(vectorOld[2]) + vectorOld[1]*cos(vectorOld[2])); + vectorNew[0] = parameters[0] + parameters[1] * (vectorOld[0]*cos(vectorOld[2]) - vectorOld[1]*sin(vectorOld[2])); + vectorNew[1] = parameters[1] * (vectorOld[0]*sin(vectorOld[2]) + vectorOld[1]*cos(vectorOld[2])); } };