GY-63_MS5611/libraries/Logistic/Logistic.h
2024-01-04 17:08:20 +01:00

65 lines
1.1 KiB
C++

#pragma once
//
// FILE: logistic.h
// AUTHOR: Rob.Tillaart
// VERSION: 0.1.0
// DATE: 2024-01-03
// PURPOSE: Arduino library to explore the logistic formula. (chaos, bifurcation)
// URL: https://github.com/RobTillaart/Logistic
#include "Arduino.h"
#define LOGISTIC_LIB_VERSION (F("0.1.0"))
// https://en.wikipedia.org/wiki/Feigenbaum_constants
#define FEIGENBAUM 4.66920160910299067185320382046620161
class Logistic
{
public:
// rate = reproduction rate = 0.0 - 4.0
// in = input population = 0.0 - 1.0
Logistic(float rate = 2.0, float in = 0.5)
{
_rate = constrain(rate, 0, 4);
_in = in;
}
void setRate(float rate)
{
_rate = constrain(rate, 0, 4);
}
float getRate()
{
return _rate;
}
float iterate(float in)
{
// range check
_in = constrain(in, 0.0, 1.0);
_out = _rate * _in * (1.0 - _in);
return _out;
}
float iterate()
{
_in = _out;
_out = _rate * _in * (1.0 - _in);
return _out;
}
protected:
float _rate;
float _in;
float _out;
};
// -- END OF FILE --