
10 changed files with 109 additions and 245 deletions
@ -1,43 +0,0 @@ |
|||
//
|
|||
// $filename
|
|||
// $projectname
|
|||
//
|
|||
// Created by Joshua moerman on $TODAY.
|
|||
// Copyright 2010 Joshua Moerman. All rights reserved.
|
|||
//
|
|||
|
|||
#include "Logistic.hpp" |
|||
#include <algorithm> |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark ctors |
|||
|
|||
Logistic::Logistic(): |
|||
AttractorKernel(3, 3) { |
|||
init(); |
|||
} |
|||
|
|||
Logistic::Logistic(const unsigned int dimension): |
|||
AttractorKernel(dimension, dimension) { |
|||
init(); |
|||
} |
|||
|
|||
void Logistic::init() { |
|||
// setting some starting values
|
|||
std::fill_n(vectorOld, dimension, 0.5); |
|||
std::fill_n(vectorNew, dimension, 0.5); |
|||
} |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark attractor |
|||
|
|||
void Logistic::operator()() { |
|||
std::swap(vectorNew, vectorOld); |
|||
|
|||
for(unsigned int i = 0; i < dimension; i++) { |
|||
vectorNew[i] = parameters[i]*vectorOld[i]*(1.0 - vectorOld[i]); |
|||
} |
|||
} |
|||
|
@ -1,39 +0,0 @@ |
|||
#include "Lorenz3D.hpp" |
|||
#include <algorithm> |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark ctors |
|||
|
|||
Lorenz3D::Lorenz3D(): |
|||
AttractorKernel(3, 4) { |
|||
init(); |
|||
} |
|||
|
|||
void Lorenz3D::init() { |
|||
// setting some starting values
|
|||
std::fill_n(vectorOld, dimension, 1.0); |
|||
std::fill_n(vectorNew, dimension, 1.0); |
|||
} |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark attractor |
|||
|
|||
void Lorenz3D::operator()() { |
|||
std::swap(vectorNew, vectorOld); |
|||
|
|||
vectorNew[0] = vectorOld[0] + parameters[0] * parameters[1] * (vectorOld[1] - vectorOld[0]); |
|||
vectorNew[1] = vectorOld[1] + parameters[0] * (vectorOld[0] * (parameters[2] - vectorOld[2]) - vectorOld[1]); |
|||
vectorNew[2] = vectorOld[2] + parameters[0] * (vectorOld[0] * vectorOld[1] - parameters[3] * vectorOld[2]); |
|||
} |
|||
|
|||
/*
|
|||
4D: |
|||
new_point[0] = point[0] + param[0] * param[1] * (point[1] - point[0]); |
|||
new_point[1] = point[1] + param[0] * (point[0] * (param[2] - point[2]) - point[1] + point[3]); |
|||
new_point[2] = point[2] + param[0] * (point[0] * point[1] - param[3] * point[2]); |
|||
new_point[3] = point[3] - param[0] * param[4] * point[0]; |
|||
break; |
|||
*/ |
|||
|
@ -1,66 +0,0 @@ |
|||
//
|
|||
// $filename
|
|||
// $projectname
|
|||
//
|
|||
// Created by Joshua moerman on $TODAY.
|
|||
// Copyright 2010 Joshua Moerman. All rights reserved.
|
|||
//
|
|||
|
|||
#include "Polynomial.hpp" |
|||
#include <algorithm> |
|||
|
|||
|
|||
unsigned int calculateNumberOfParameters(const unsigned int dimension, const unsigned int orde) { |
|||
double n_coef = orde + 1; |
|||
for(unsigned int i = 2; i <= dimension; i++) { |
|||
n_coef = n_coef*(orde + i)/(i - 1); |
|||
} |
|||
|
|||
const unsigned int output = (unsigned int) n_coef; |
|||
return output; |
|||
} |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark ctors |
|||
|
|||
Polynomial::Polynomial(): |
|||
AttractorKernel(3, calculateNumberOfParameters(3, 2)), orde(2) {} |
|||
|
|||
Polynomial::Polynomial(const unsigned int dimension, const unsigned int orde): |
|||
AttractorKernel(dimension, calculateNumberOfParameters(dimension, orde)), orde(orde) {} |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark attractor |
|||
|
|||
void Polynomial::operator()() { |
|||
std::swap(vectorNew, vectorOld); |
|||
|
|||
unsigned int m = 0; |
|||
for(unsigned int i = 0; i < dimension; i++) { |
|||
|
|||
vectorNew[i] = parameters[m]; |
|||
m++; |
|||
recur(i, 0, 1, m); |
|||
} |
|||
} |
|||
|
|||
void Polynomial::recur(unsigned int curr_dimension, unsigned int prev_i, unsigned int n, unsigned int& m, double prev_product) { |
|||
double product; |
|||
for(unsigned int i = prev_i; i < dimension; i++) { |
|||
|
|||
product = prev_product * vectorOld[i]; |
|||
vectorNew[curr_dimension] += parameters[m] * product; |
|||
m++; |
|||
if(n < orde) { |
|||
recur(curr_dimension, i, n+1, m, product); |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
@ -1,36 +0,0 @@ |
|||
//
|
|||
// $filename
|
|||
// $projectname
|
|||
//
|
|||
// Created by Joshua moerman on $TODAY.
|
|||
// Copyright 2010 Joshua Moerman. All rights reserved.
|
|||
//
|
|||
|
|||
#include "PolynomialA3D.hpp" |
|||
#include <algorithm> |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark ctors |
|||
|
|||
PolynomialA3D::PolynomialA3D(): |
|||
AttractorKernel(3, 3) {} |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark attractor |
|||
|
|||
void PolynomialA3D::operator()() { |
|||
std::swap(vectorNew, vectorOld); |
|||
|
|||
vectorNew[0] = parameters[0] + vectorOld[1] - vectorOld[1]*vectorOld[2]; |
|||
vectorNew[1] = parameters[1] + vectorOld[2] - vectorOld[2]*vectorOld[0]; |
|||
vectorNew[2] = parameters[2] + vectorOld[0] - vectorOld[0]*vectorOld[1]; |
|||
} |
|||
|
|||
/*
|
|||
N dimensional: |
|||
for ( unsigned int i = 0; i < dim; i++ ) { |
|||
new_point[i] = param[i] + point[(i+1) % dim] - point[(i+1) % dim]*point[(i+2) % dim]; |
|||
} |
|||
*/ |
@ -1,33 +0,0 @@ |
|||
#include "Unravel3D.hpp" |
|||
#include <algorithm> |
|||
#include <cmath> |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark ctors |
|||
|
|||
Unravel3D::Unravel3D(): |
|||
AttractorKernel(3, 7) {} |
|||
|
|||
|
|||
#pragma mark - |
|||
#pragma mark attractor |
|||
|
|||
void Unravel3D::operator()() { |
|||
std::swap(vectorNew, vectorOld); |
|||
|
|||
vectorNew[0] = parameters[0]*(vectorOld[2] + parameters[1]); |
|||
vectorNew[1] = parameters[2]*(vectorOld[0] + parameters[3]); |
|||
vectorNew[2] = parameters[4]*(vectorOld[1] + parameters[5]); |
|||
|
|||
const double dist = vectorNew[0]*vectorNew[0] + vectorNew[1]*vectorNew[1] + vectorNew[2]*vectorNew[2]; |
|||
|
|||
if(dist > parameters[6]*parameters[6]) { |
|||
const double sqrtDist = std::sqrt(dist); |
|||
const double p = 1.0 - parameters[6] * (static_cast<int>(sqrtDist / parameters[6]) + 1.0) / sqrtDist; |
|||
vectorNew[0] *= p; |
|||
vectorNew[1] *= p; |
|||
vectorNew[2] *= p; |
|||
} |
|||
} |
|||
|
Reference in new issue