MATLAB Answers

# Test based on inequality of two vectors does not succeed.

3 views (last 30 days)
Oddur Bjarnason on 30 Oct 2016
Commented: Oddur Bjarnason on 31 Oct 2016
([1,0],[0.8,0.2;0.6,0.4])
function stationarystates( S0,T )
%This function is a simple model of a Markov chain
% S0 is the initial state
% T is the transition matrix
% I want the cumulation of states to stop after state i if state i =
% state i+1. This does not happen with this code
M=S0
for i=1:1:10
if S0*T^i~=S0*T^(i-1) %Test for inequality of successive states
M((i+1),:)=S0*T^i; %M cumulates the states
else break
end
end
disp(M)
plot(M)
end
##### 1 CommentShowHide None
Massimo Zanetti on 31 Oct 2016
Adding some explanation to summarize your problem?

Sign in to comment.

### Accepted Answer

Image Analyst on 31 Oct 2016
Edited: Image Analyst on 31 Oct 2016
And of course S0*T^i will never equal S0*T^(i-1) - the exponent is different! What you need to do is use i and (i-1) as indexes into the S0 array. It looks like S0 better be an array or you won't get it to work.
##### 5 CommentsShowHide 4 older comments
Oddur Bjarnason on 31 Oct 2016
Thank you Steven, I have come to realize this. See my answer below which follows Image Analyst's answer and comments.

Sign in to comment.

### More Answers (1)

Oddur Bjarnason on 31 Oct 2016
function stationarystates(S0,T) %This function is a simple model of a Markov chain % S0 is the initial state % T is the transition matrix % I want the cumulation of states to stop after state i if the difference % between states is small enough.
M=S0
for i=1:1:10
m1 = S0*T^i;
m2 = S0*T^(i-1);
mDiff = abs(m2-m1);
if max(mDiff(:)) > 0.00001; % The states are essentially equal.
M((i+1),:)=S0*T^i; % M cumulates the states
else break
end
end
disp(M)
plot(M)
end
##### 1 CommentShowHide None
Oddur Bjarnason on 31 Oct 2016
Thank you Image Analyst. This code is accordance with your answer and comments and yields the results I needed. I realize that the rows of the matrix approach the stationary matrix asymptotically but never becomes equal to the stationary state. So I have to be satisfied with a difference between states that is small enough. Thank you again. Oddur.

Sign in to comment.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!