Advertisement
sashachca

Untitled

Sep 22nd, 2018
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.98 KB | None | 0 0
  1. function laba1
  2.  
  3.   % task 1
  4.  
  5.   P = [0.173, 0.287, 0.540; 0, 0.587, 0.413; 0, 0.159, 0.841];
  6.   n_min = 100;
  7.   delta = [];
  8.   n = 2;
  9.   printf(' P(1) = \n'), disp(P)
  10.  
  11.   while n <= n_min
  12.  
  13.     P(:, :, n) = P(:, :, n-1) * P(:, :, 1); % 3-merny massiv, kotory soderjit vse matricy stepeney ot 1 do n_min
  14.     delta(n) = max(max(abs( P(:, :, n) - P(:, :, n-1) ))); % nahodim maksimalnoe otklonenie sredi vseh veroyatnostey mejdu nastoyacshey matricey i predyduschey
  15.    
  16.     if delta(n) < 0.00001
  17.       n_min = n;
  18.     endif
  19.    
  20.     n += 1;
  21.   endwhile
  22.  
  23.   for n = 2:n_min
  24.  
  25. %    printf('\n\n P(%i) = \n', n);
  26. %    disp(P(:, :, n));
  27. %    printf(' \ndelta%i = %i\n', n, delta(n));
  28.    
  29.   endfor
  30.  
  31.  
  32.  
  33.   % task 2
  34.  
  35.   % q - stolbets
  36.   % qP = q => qP - q = 0 => q(P - E) = 0, gde E - edinichnaya matrica, prichem v nashem kode eto eye(n)
  37.   % q = (r1, r2, r3)
  38.   % eye(n) - edinichnaya matrica n x n
  39.  
  40.   A = P(:, :, 1)' - eye(3); % vychitaem edinichnuyu matricu
  41.   A = [A, zeros(3, 1)]; % pripisyvaem 4-y stolbets s nulevymi svobodnymi chlenami
  42.   A(3,:) = ones(1, 4); % t.k. vectory lineyno zavisimye, to vycherkivaem poslednyuyu stroku
  43.   % pri etom u nas est' uslovie normirovki: r1 + r2 + r3 = 1 -- stavim ego na mesto vycherknutoy stroki
  44.  
  45.   A = gauss(A); % reshaem SLAU
  46.  
  47.   printf('\n\n');
  48.   q = A(:, 4)' % q - naydennoe stacionarnoe raspredelenie
  49.   qP = q*P(:, :, 1) % Prover 04ka:
  50.  
  51.   if q == qP
  52.     disp(' => q = qP')
  53.   else
  54.     disp(' => q =/= qP')
  55.   endif
  56.  
  57.  
  58.  
  59.   % task 3
  60.  
  61.   % p(0) = ( p1(0), p2(0), p3(0) )
  62.   % p(n) = p(0)*P^n
  63.   % prichem v nashem kode P^n - eto "P(:, :, n)"
  64.  
  65.   states = eye(3); % potomu chto sostoyaniya (1, 0, 0), (0, 1, 0), (0, 0, 1) - eto stolbtsy edinichnoy matricy
  66.   for p0 = states
  67.     printf('\n\n');
  68.    
  69. %    p0 = p0'
  70. %    delta0 = max(abs( p0 - q) )
  71. %    
  72. %    ProbDistr(p0);
  73.  
  74.   endfor
  75.  
  76.  
  77.  
  78.   % task 4
  79.  
  80.   % orientiruyus' po kartinke na doske
  81.  
  82.   Seq = [];
  83.   for i = 1:3
  84.  
  85.     Seq = [Seq; gen(i)];
  86.    
  87.   endfor
  88.   %Seq(:, 1:100)
  89.  
  90.  
  91.  
  92.   size(Seq)
  93.   % task 5
  94.   all_R = R = [];
  95.   %for state = 1:3
  96.     for i = 1:3
  97.     sum(i == Seq(state,:)
  98.      % R = [R, sum(i == Seq(state,:)];
  99.     endfor
  100.     %all_R = [all_R; R]
  101.   %endfor
  102. R
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.   %_____________________________________________________________________________
  112.  
  113.  
  114.   function ProbDistr(p0) % task 3
  115.    
  116.     n = 1;
  117.     m_min = 100;
  118.     while n <= m_min
  119.    
  120.       p(n, :) = p0 * P(:, :, n);
  121.       delta_(n) = max(abs( p(n, :) - q ));
  122.      
  123.       if delta_(n) < 0.00001
  124.         m_min = n;
  125.       endif
  126.      
  127.       n += 1;
  128.     endwhile
  129.    
  130.     for n = 1:m_min
  131.  
  132.       printf('\n\n  p(%i) = \n', n);
  133.       disp(p(n, :));
  134.       printf(' \n  delta%i = %i\n', n, delta_(n));
  135.      
  136.     endfor
  137.    
  138.    
  139.    endfunction
  140.    
  141.    
  142.    
  143.    function I = gen(i) % task 4
  144.       I = [];
  145.       E = 0;
  146.    
  147.       for n = 1:1000
  148.         E = rand(1);
  149.              
  150.         if E < P(i, 1, 1)
  151.            i = 1;
  152.          elseif E < P(i, 1, 1) + P(i, 2, 1)
  153.            i = 2;
  154.          else
  155.            i = 3;
  156.          endif
  157.          
  158.          I(n) = i;
  159.       endfor
  160.  
  161.    endfunction
  162.  
  163.  
  164. end
  165.  
  166.  
  167.  
  168.  
  169.  
  170.      
  171. % for task 4      
  172. %        switch i
  173. %    
  174. %          case 1
  175. %            if E < P(1, 1, 1)
  176. %              i = 1;
  177. %            elseif E < P(1, 1, 1) + P(1, 2, 1)
  178. %              i = 2;
  179. %            else
  180. %              i = 3;
  181. %            endif          
  182. %            I(n) = i;
  183. %            
  184. %            
  185. %          case 2
  186. %            if E < P(2, 1, 1)
  187. %              i = 1;
  188. %            elseif E < P(2, 1, 1) + P(2, 2, 1)
  189. %              i = 2;
  190. %            else
  191. %              i = 3;
  192. %            endif      
  193. %            I(n) = i;
  194. %            
  195. %            
  196. %          case 3
  197. %            if E < P(3, 1, 1)
  198. %              i = 1;
  199. %            elseif E < P(3, 1, 1) + P(3, 2, 1)
  200. %              i = 2;
  201. %            else
  202. %              i = 3;
  203. %            endif      
  204. %            I(n) = i;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement