Untitled
unknown
c_cpp
a year ago
1.2 kB
10
Indexable
#include <iostream>
#include <Eigen/Dense>
using Eigen::MatrixXd;
double Absd(double X)
{
if (X < 0)
{
return -X;
}
return X;
}
bool CloseToOne(MatrixXd state)
{
double Threshold = 0.0001;
if (Absd(state(0, 0) - 1.0) <= Threshold) return true;
if (Absd(state(1, 0) - 1.0) <= Threshold) return true;
if (Absd(state(2, 0) - 1.0) <= Threshold) return true;
}
int main()
{
MatrixXd transition(3, 3);
transition(0, 0) = 0.9; transition(0, 1) = 0.1; transition(0, 2) = 0.0;
transition(1, 0) = 0.0; transition(1, 1) = 0.8; transition(1, 2) = 0.2;
transition(2, 0) = 0.0; transition(2, 1) = 0.0; transition(2, 2) = 1.0;
MatrixXd initial_state(3, 1);
initial_state(0, 0) = 0.0;
initial_state(1, 0) = 0.0;
initial_state(2, 0) = 1.0;
for (int i = 0; i < 10000; ++i)
{
MatrixXd next_state = transition * initial_state;
if (CloseToOne(next_state))
{
std::cout << "Pure Aloha at index i = " << i << " \n";
break;
}
initial_state = next_state;
}
}Editor is loading...
Leave a Comment