// // $filename // $projectname // // Created by Joshua moerman on $TODAY. // Copyright 2010 Joshua Moerman. All rights reserved. // #include "Logistic.hpp" Logistic::Logistic(): myParameters(NULL), vectorNew(NULL), vectorOld(NULL) { dimension = 3; init(); } Logistic::Logistic(const unsigned int dimension): myParameters(NULL), vectorNew(NULL), vectorOld(NULL), dimension(dimension) { init(); } void Logistic::init() { const unsigned int numberOfParameters = dimension; if ( myParameters != NULL ) { delete myParameters; } myParameters = new double[numberOfParameters]; if ( vectorNew != NULL ) { delete vectorNew; } vectorNew = new double[dimension]; if ( vectorOld != NULL ) { delete vectorOld; } vectorOld = new double[dimension]; assert(myParameters != NULL); assert(vectorNew != NULL); assert(vectorOld != NULL); for ( unsigned int i = 0; i < numberOfParameters; i++ ) { myParameters[i] = 0.0; } for ( unsigned int i = 0; i < dimension; i++ ) { vectorNew[i] = vectorOld[i] = 0.5; } } void Logistic::iterate() { swap(vectorNew, vectorOld); for ( unsigned int i = 0; i < dimension; i++ ) { vectorNew[i] = myParameters[i]*vectorOld[i]*(1.0 - vectorOld[i]); } } // setters, getters, all i/o to other classes/objects void * Logistic::getProperty(const string identifier) { if ( identifier == "dimension" ) { unsigned int * _return = new unsigned int; *_return = dimension; return _return; } return NULL; } void Logistic::setProperty(const string identifier, const void * _value) { if ( identifier == "dimension" ) { unsigned int * value = (unsigned int*) _value; dimension = *value; init(); } } double * & Logistic::parameters() { return myParameters; } double & Logistic::parameter(const unsigned int index) { return myParameters[index]; } unsigned int Logistic::getNumberOfParameters() { return dimension; } double * & Logistic::vector() { return vectorNew; } double * & Logistic::previousVector() { return vectorOld; }