function[]=howard(P1,R1,P2,R2);



% algoritmus Howardova iteracniho postupu

% ---------------------------------------

% function[]=howard(P1,R1,P2,R2)

%

% P1,P2...matice prechodu pro 1. a 2.strategii

% R1,R2...matice vynosu pro 1. a 2. strategii

%



konec=false;v1=0;j=2;

q1=diag(P1*R1');

q2=diag(P2*R2');

Q=[q1 q2]; 

[x,v]=max(Q'); % v nam zjisti pozice,na kterych se nachazi vetsi hodnota,takze ziskame vektor strategii

D(1,:)=[v];

D(2,:)=[0 0];



while konec==false;

% sestavime rovnice podle vektoru strategii

if v(1)==1

    A(1,:)=[1 1-P1(1,1)];

else

    A(1,:)=[1 1-P2(1,1)];

end;

if v(2)==1

    A(2,:)=[1 -P1(2,1)];

else

    A(2,:)=[1 -P2(2,1)];   

end;  

% pro reseni soustavy Ax=b bude vektor b roven [Q(1,v(1));Q(2,v(2))]

x=inv(A)*[Q(1,v(1));Q(2,v(2))];

v0=x(2); 

g=x(1);

% vypocet optimalni strategie,resp.vektoru

for i=1:length(A)

    C(i,:)=[Q(i,1)+P1(i,1)*v0 Q(i,2)+P2(i,1)*v0];

end;

[x,v]=max(C'); % volba strategie,ktera nabyva sveho maxima

D(j,:)=v % umisteni na dalsi radek vektoru V, ktery slouzi po porovnavani vektoru v s predchozim vektorem

% podminka pro ukonceni cyklu (umistil jsem ji na konec cyklu,abych nemusel

% pred cyklus davat jeden cyklus jako zacinajici

if all(D(j,:)==D(j-1,:))==1

    konec=true;

else

    konec=false;

end;

j=j+1;

end;

disp(['Konecny vektor strategii je (',num2str(v),')´. '])