Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/NathanEpstein/markov
A compact C++ library for easily simulating common Markov processes.
https://github.com/NathanEpstein/markov
Last synced: 18 days ago
JSON representation
A compact C++ library for easily simulating common Markov processes.
- Host: GitHub
- URL: https://github.com/NathanEpstein/markov
- Owner: NathanEpstein
- Created: 2015-01-20T15:57:40.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2016-11-08T00:58:03.000Z (about 8 years ago)
- Last Synced: 2024-07-31T22:53:54.150Z (3 months ago)
- Language: C++
- Homepage:
- Size: 26.4 KB
- Stars: 90
- Watchers: 7
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#markov
##Usage
1) Clone this library into your project
`git clone https://github.com/NathanEpstein/markov.git`
2) Make markov.o and libmarkov.a by calling `make` on this library's Makefile (assuming you aren't using a package manager which does this for you).
`cd markov && make`
3) Include the appropriate header in your project file
```c++
#include "../markov/markov.h"int main(){
// your code here...
}
```4) Compile with `g++ myFile.cpp -L ../markov -l markov`
##Examples
####Poisson Process
```c++
#include "../markov/markov.h"int main(){
//SIMULATE A POISSON PROCESS
double lambda = 6.2;
double T = 10;
std::vector P = poissP(lambda,T) ;return 0;
}
```#### Brownian Motion
```c++
#include "../markov/markov.h"int main(){
//SIMULATE BROWNIAN MOTION
double mu = 0.8;
double sigma = 0.2;
double T = 10;
int steps = 100;
std::vector brown = brownian(mu,sigma,T,steps);return 0;
}
```#### Geometric Brownian Motion
```c++
#include "../markov/markov.h"int main(){
//SIMULATE GEOMETRIC BROWNIAN MOTION
double S0 = 5;
double mu = 0.8;
double sigma = 0.2;
double T = 10;
int steps = 100;
std::vector geo = geoBrownian(S0,mu,sigma,T,steps);return 0;
}
```#### Discrete Time Markov Chains
```c++
#include "../markov/markov.h"int main(){
//SIMULATE DISCRETE TIME MARKOV CHAIN
std::vector< std::vector > matrix(3,std::vector (3)); //initializes a 3x3 matrix with zeros//set transition matrix
matrix[0][1] = 1;
matrix[1][2] = 1;
matrix[2][0] = 1;int steps = 10;
int start = 0;
double T = 8.5;
//simulate discrete time Markov Chain
std::vector discreteMC = DTMC(matrix,steps,start);return 0;
}
```#### Continuous Time Markov Chains
```c++
#include "../markov/markov.h"int main(){
//SIMULATE CONTINUOUS TIME MARKOV CHAIN
std::vector< std::vector > matrix(3,std::vector (3)); //initializes a 3x3 matrix with zeros//set transition matrix
matrix[0][1] = 1;
matrix[1][2] = 1;
matrix[2][0] = 1;int start = 0;
double T = 8.5;
//simulate continuous time Markov Chain
CTMC continuousMC(matrix);
continuousMC.simulate(T,start);std::vector times = continuousMC.transTimes();
std::vector states = continuousMC.getStates();return 0;
}
```### Previous Version
This library initially implemented CTMC as a function which returned a matrix instead of a class. To access the original (deprecated) version use `git clone -b v1 https://github.com/NathanEpstein/markov.git`
## License
**The MIT License (MIT)**
> Copyright (c) 2014 Nathan Epstein
>
> Permission is hereby granted, free of charge, to any person obtaining a copy
> of this software and associated documentation files (the "Software"), to deal
> in the Software without restriction, including without limitation the rights
> to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
> copies of the Software, and to permit persons to whom the Software is
> furnished to do so, subject to the following conditions:
>
> The above copyright notice and this permission notice shall be included in
> all copies or substantial portions of the Software.
>
> THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
> OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
> THE SOFTWARE.