Test based on inequality of two vectors does not succeed.
    12 views (last 30 days)
  
       Show older comments
    
    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 Comment
Accepted Answer
  Image Analyst
      
      
 on 31 Oct 2016
        
      Edited: Image Analyst
      
      
 on 31 Oct 2016
  
      Are S0 and T integers? Otherwise see the FAQ: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
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 Comments
  Steven Lord
    
      
 on 31 Oct 2016
				>> m1 = [1,0]*[0.8,0.2;0.6,0.4]^6
m1 =
    0.7500    0.2500
>> m2 = [1,0]*[0.8,0.2;0.6,0.4]^7
m2 =
    0.7500    0.2500
>> m1-m2
ans =
   1.0e-04 *
    0.1280   -0.1280
Just because m1 and m2 look the same using the default display format doesn't mean they contain the same values. You can see this more clearly using a different display format.
>> format longg
>> [m1; m2; m1-m2]
ans =
                  0.750016                  0.249984
                 0.7500032                 0.2499968
       1.2800000000035e-05     -1.27999999999795e-05
More Answers (1)
See Also
Categories
				Find more on Number Theory in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


